Add BaseCollections

Created a BaseCollections class that is templated over both the
dataspace type and the Element type.

Collections is now templated over the Element type only.

All Collection types (Collection, Seq, Set...) inherit directly from
BaseCollection