Add a dummy_request method to Page so that we can generate page previews without passing in the active request object (which may have undesirable side effects, e.g. may be a POST)
Add get_page_modes and show_as_mode methods to Page.

This abstracts out from the preview methods the details of how the page is generated.
Support within wagtailadmin for selecting a view mode in which to preview a page.

The 'preview' option is split out from the 'save' popup menu into its own button (it was deemed appropriate to split it off since it doesn't perform any database-level actions). If the page defines multiple page modes in get_page_modes, this button becomes a popup, allowing the editor to choose a mode. Finally, preview_on_create and preview_on_edit are updated to pass the chosen mode into the page's show_as_mode method.
Merge branch 'master' into feature/pagemodes

Conflicts:
	wagtail/wagtailcore/models.py
fix logic for fetching the default page mode - should return the internal name, not the tuple