Refactor postDetail controller to load views as needed

Don’t load PostDetailLayout, PostDetailView, RelatedPostsView initially,
only load them when we trigger the postDetail controller
Improve handling of frontend 'view' switching: map, list, full

- Move handling of views for home layout (map, list, search) into
HomeLayout
- Maintain the 'view' as a state on the Home Layout. This means we can
return
  to the last ‘view’ the user selected, not always back to ‘full’ post
view.
- Add HomeLayout.setViews() that lets you set which views (map, list,
search)
  to render
- Add onClose() callback to MapView to destroy the leaflet map object
when the
  view is hidden.
- Link ‘Full’ view to /view/full since index now renders which view was
shown last