GEOMESA-93 Implement KNN as a WPS function

* Add a K-Nearest Neighbors Search that implements a GeoHash-by-GeoHash query strategy.
* Expose the KNN Search as a WPS process.
* Include an example KNN Search based on the location of the White House.
* Add a bounded PriorityQueue implementation.
* Add a method which, given a GeoHash, retrieves a list of all other GeoHashes in contact with it.
* Using the above method, implement a 'GeoHashSpiral' an Iterator that produces GeoHashes in order of distance from a point.


See https://github.com/locationtech/geomesa/pull/147 for prior review history and comments. 

Please note that server-side geodetic calculations and KNN ordering will be left to future tickets.

Some methods should be moved to other parts of GeoMesa (particularly the GeoHash tools)

This was a note to myself, and has been removed. 

In theory, an abusive user could add Features with distances relative to different points, and that would cause some harm. In the current implementation, that is hard to do. It would be easier to make this mistake I think if the distances had already been calculated and loaded into attributes in the Feature.