Add middleware to redirect old IE versions

We decided that IE 9 was our cutoff. I implemented this as
a piece of middleware that checks the user agent string and
compares it to a minimum version in settings.py.
Merge pull request #238 from jwalgran/topic/no-ie-8

Add middleware to redirect old IE versions
Merge pull request #248 from ahinz/topic/field-permission-ui

Add some cool audit helpers
Set up cross-site forgery protection for $.ajax()
Add Search.reset() for clarity
Add tree (and plot)

* "Add Tree" button activates addTreeMode
* User must click the map to set the initial tree position (soon they will instead enter an address or click a geolocate button)
* User must then drag the tree to desired position
* Then the tree fields are enabled for editing
* In the end I did not use "inlineEditForm.js" because I have only edit fields (not display fields)

In field.html:
* Use template filter default_if_none so empty fields display as empty, not "None"
* Include "data-type" attribute so we know what type of value we're collecting

We update the map when adding a tree:
* Endpoint returns new geoRevHash
* If geoRevHash has changed, JS updates layer URLs and redraws
* Also clean up some whitespace in modeManagerForMapPage.js

Misc:
* "clickedLatLonStream" now lives only in browseTreesMode (the other modes don't need it)
Add fieldHelpers.js - helpers for fields defined by the field.html template
Respond to code review feedback.

* Document state machine in addTreeMode.js
* Use more RESTy URL for adding trees
* Explain empty tree instance in _get_map_view_context()
Use clearer way to set up csrf protection
Merge pull request #253 from RickMohr/add-trees

Add tree (and plot)
Fix jshint complaints
Merge branch 'add-trees'
Fix IE detection middleware to not fail tests

Test client does not specify HTTP_USER_AGENT.
Merge branch 'master' of github.com:azavea/OTM2
Add support for multi-region eco benefits

Previously eco benefits were calculated based on a fixed region
parameter. However, we can use the plot's location to define exactly
which region the tree belongs to.

The data is pending, however so the initial migration creates an overlay
over the entire united states for the Piedmont region. When the data
become available we can replace this migration
Update main app to support geo-based region