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)