Separate the entry point modules

Certain modules are used to setup features/routes (e.g. bind
to certain hash fragments) or to progressively enhance the page.

This splits those out to make it clearer and cleans up their dependencies
in the process (if a parent has a dependency it doesn't need to be restated)

Change-Id: I48d75893be973451e16ca0b593ac828b8e118eb3
Merge "Separate the entry point modules"