Block module thinks it is special but it isn't (anymore). Lets make it optional, and allow contrib to provide alternate ways to populate the page regions - thats the fundamental goal of block module. For example, Panels will surely consider becoming a block replacement.
This patch adds some standard install/uninstall/hook_flush_caches to block module.
We keep the same user experience during install of default profile, but block module gets enabled and populated by the profile, not by core. Expert profile does not ship with block enabled anymore since it is supposed to show only the required bits.
The only minor blemish I see in the patch is a module_exists() that is added to cache_clear_all(). I'll refactor that function in a subsequent patch. That function needs a serious overhaul as it does performs different functions in each of its branches.