Connect server-side geocoder to boundary search box

The boundary search box does double duty. If the value typed into the box does not match any of the autocomplete values, we assume that it is an address/location to be geocoded.

The two major chunks of this feature are:

  - Detecting what is an autocomple and what it not. This is handled by Bacon stream processing that puts any unmatched value in an attribute on the <input> tag, which can be picked up by the geocoder controller

  - Pan and zoom the map if the geocoder returns one result or show a popover to disambiguate if the geocoder returns multiple results. There is some cool bacon stream processing here, too, so that the same pan/zoom handler is used in both situations.

I also reworked the server-side geocoder to support the implementation of this feature:

  - The endpoint transforms response coordinates to spherical mercator (the CRS of the web map)
  - The endpoint returns multiple matches with scores so that the client can show a picker.
  - I created a wrapped view function so that functionality can be tested without the Django client.