fill page_type as identifier in template

• unlike a page name the page_type is permanently the same and can be used for css purposes
improve handling of page_type and template

• make sure the changes are saved and the selected values handled properly
• add focus to edit button instead of accordion tab
prevent opening tap panel on click of button
Add ability to override denyable user per model
Fix attribute types
add badge style
Add timezone to user model
Allow editing a user’s time zone in user_detail
The Big Timezone Refactor™

* Server time zone is now always set to UTC.
  This means any times in the database are UTC.
* LocaleUtil::formatDate will convert from UTC to the user’s preferred time zone.
* The time zone from the settings (general/timezone) is used for users without a
  configured time zone and to format dates when no user is logged in.

The reason for this change is to make server migrations simpler:
no matter where the server is physically located, all the dates
it has to deal with are always in UTC.

If anything breaks, we probably need to format a date before output.
Don’t format `null` in LocaleUtil::localizeDate

To be discussed. Would allow passing a database field directly to localizeDate without checking null.

I have not found a single instance where it is called explicitly with `null` so this is probably a safe change.
Add findMostRecentUpdate to query classes

Allows you to retrieve the DateTime object of the time the last update was performed.
Add utility method for cache control headers

As it turns out, sending a last-modified header can be useful outside of the cache class.

Oh, and apparently, ETags are not cool anymore, so we’ll remove them. Also we never used them correctly anyway.
Model addtions for scheduled items
Re-generate model with changes
Implement scheduler backend.

Entries in scheduled actions can be polled and executed.
Implement “activate” action for pages
add filter for scheduled/unscheduled
make sure to use UTC for execution date
add scheduler icon
Add scheduler widgets