Refactored to make joining features to their attributes much easier

Merged FeatureCollection into ThematicMap, replaced many interfaces
with abstract classes (and moved these to the components package)