Change text on activate.html to inform users they may have clicked twice

Fixes #792
Merge pull request #824 from maurizi/fix/792/activationLinkText

Change text on activate.html to inform users they may have clicked twice
Create mapstate.js and refactor map.js to use it

* mapstate.js serializes/deserializes map state to a URL query string
* State includes map center and zoom level, current OTM search, and whether you're in "Add Tree" mode
* Values from the URL are communicated via `stateChangeStream` and handled in map.js
* App state changes are recorded in the URL via `setZoomLatLng`, `setSearch`, and `setModeName` functions

Cleanup:
* Remove utility.js functions (integrated into mapState.js)
* Remove `ADD_TREE_URL_HASH` from settings.py and `addTreeUrlHash` from settings.js

Also simplify/clarify stream logic in map.js:
* Eliminate single-use Bacon streams. Fewer named streams makes the logic easier to understand.
* For clarity, use Bacon.mergeAll to merge two streams. To me it's clearer this way when you're also doing something to one or more of the streams.
* Reorder code in init() so first we set up all streams and event handlers, and second we init everything

Also change inlineEditForm's inEditModeProperty to not fire an initial value
* Simplifies initialization in map.js
* Simplifies plot.js
Use third-party `History` module for "pushState" etc. capabilities on IE9

* Comes from https://github.com/browserstate/history.js
* Eliminate `U.pushState`
* On plot detail page, toggling edit mode does `replaceState` instead of `pushState` so we don't build up useless history
Clean up from merge, and respond to feedback.

This commit should be squashed, but it required reordering and had dozens of conflicts. So I'm letting it stand.

Respond to feedback.
Merge pull request #825 from RickMohr/map-state

Map state
Use DEBUG instead of TEMPLATE_DEBUG to turn on/off minified JS
Fixes #826

TEMPLATE_DEBUG was always being set to True, since it was set to the value
of DEBUG *before* DEBUG was reset from local_settings.py.

Instead, we are now always setting TEMPLATE_DEBUG to True, since it has no
effect when DEBUG is False
Properly handle generating a hash for objects with no audit records
Fixes #821
Merge pull request #823 from maurizi/fix/821/plotPopup

Properly handle generating a hash for objects with no audit records
Merge pull request #828 from maurizi/fix/826/minifedJs

Use DEBUG instead of TEMPLATE_DEBUG to turn on/off minified JS
Use minified JS when not in DEBUG mode
Commit 6e982d83c9 mised a few places TEMPLATE_DEBUG was being used.
Add view decorator for user update views, add URL tests for user update.

Checks the username, returns 404 if the username doesn't exist, 403 if it's
for the wrong user, and replaces username with the user otherwise.
Add endpoint for updating user profile photos
Add API endpoint which calls upload_user_photo
Fix indentation and remove vim filetype comment
Add photo upload to user profile page
Merge pull request #835 from maurizi/topic/447/userProfilePhoto

User profile photo upload