Introduce the concept of time zones [MJ-846]

Opening for opinions. 

This introduces the concept of a time zone on the user. Adding the localtime block to base.html should mean that nearly everything is appropriately zoned, although there are a few edge cases like printer_friendly.html.

There are a few things I don't like about this that there may be better ways to handle:
* The middleware requires a look up every single time. There's no good way to determine whether or not a timezone is activated already that I know of.
* The timezone logic is all over the place. In every case it should be displayed to the user in localtime and stored in the database in utc, and I try to keep all of the conversions at the last place possible, but there are some places where that just doesn't work out. In most cases though, it's converted to utc as soon as it hits the view and converted to localtime in the template.

The time zone account setting to change a time zone hasn't been added yet because this branch was already getting a bit out of hand.