Implemented collectionExists
Refactored Document so that it delegates to a map instead of inheriting from one.  This way we can encapsulate implementation details more effectively.