Added a simple collection base

The collection base is what the whole mask library will depend on so I
am being careful to make sure that the base is as expendable as possible
while still being easy to use and of course, easy to extend. This is
why I have used things like traits, so we can build extensions without
having to rewrite everything.