Refs #255: introducing canEdit and canRead on site
Refs #255: Checking site()->canEdit before showing content creation bar and settings.
Refs #255: Belts and braces - you have to be able to edit the site before you can edit an object on the site!
Refs #255: Introducing createGatekeeper() that checks site()->canEdit() before proceeding.

Discussion: So why not just add a check for site()->canEdit in Entity->save()? 
--------------------------------------------------------------------------------------------------

Well, that would be the most generic way, however, this would break situations where you want to create an object without a user. I.e. when registering!

Discussion: Why not just extend gatekeeper()?
-----------------------------------------------------------

Because that's asking a different question. Edit pages need to ask whether a user is both logged in *and able to create*, and not just whether they're logged in. 

Other pages, you still want to ask whether they're logged in, but you're ok that they can't create - for example, a RemoteUser who has been logged in to see content that is visible to all logged in users.
Refs #255: Don't even want to show these pages, even if they type the url manually