Make template tag page_menu more dynamic

Change hardcoded Page class in page_menu into a dynamically resolved model
name. This make page_menu more useful for custom Page subclasses.

This approach is used in pages.admin.PageAdmin, making it extremely easy to
create custom tree menu admin views.

To build a custom admin tree:

class SomePageSubclass(Pages):
    @classmethod
    def get_content_models(cls):
        # This implementation returns this class and all its subclasses
        # You can provide any logic you like
        is_content_model = lambda m: issubclass(m, cls)
        return filter(is_content_model, models.get_models())

class SomePageSubclassAdmin(PageAdmin):
    base_model_name = "someapp.SomePageSubclass"

admin.site.register(SomePageSubclass, SomePageSubclassAdmin)
Add PAGE_MENU_EXCLUSIONS setting

Provides a way to exclude certain models from Page admin's add menu without
unregistering.
PEP8 warning fix
Explicitly pass a None parent page to admin's page_menu
Add test for page_menu