Add a "spatial join" method.

Fixes ISSUE #83.
- This allows for joining different types which are aligned to different
  ReferenceRegions
- A record will appear in multiple different places when it overlaps
  multiple different regions