ENH: implemented spatial hashing and added an abstract class
This handles #109 (closed), but only separate chaining is available for now.
NOTE: This isn't the most optimal setup as I use the unordered_set
class, which creates a linked-list of points. In the future, we'll probably want to use buckets of points rather than one bucket per points to help with spatial locality.