Fix typo
Merge pull request #819 from maurizi/fix/560/notAvailableText

Fix typo in instance_not_available.html
Include contents of static file version.txt as header comment in all pages

* File treemap/static/version.txt has a default header comment
* Build systems can overwrite this file with specific info about the build
* base.html template inlines it as a header comment
* The file can also be referenced from a browser as http://<site>/version.txt
Merge pull request #806 from RickMohr/version-info-header

Include contents of static file version.txt as page header comment
Pin eco.py requirement to fix tests
Don't hide/cancel tree counts with ecobenefits

fixes #813 on github.

A previous commit, 99c236aad3965e0dac1b601ca1b70fd59b451684, removed ecobenefits for cases where the instance does not overlap an itree region. This incorrectly disabled tree counts along with it. This commit re-enables tree counts.
Add explanation text when eco turned off

fixes #799 on github.
Merge pull request #820 from steventlamb/bug/813/dont_hide_tree_counts

Bug/813/dont hide tree counts
Fix whitespace
Add benefit currency conversion data from iTree XML files
Modify ecobenefits to use currency conversion in eco.py
Change BenefitCurrencyConversion to use eco.py currency conversion

Changes model fields to be in line with underlying eco.py factors.

Pushes currency conversion (but not formatting) logic out of the view and
into the ecobenefits helper function.

Adds migrations to drop all existing models and replace them with the
default values for that instance's location.
Update the version of eco.py used
Merge pull request #807 from maurizi/topic/defaultCurrencyConversions

Default currency conversions
Fix lint
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.