WIP: Adding DataMapper support.

This is also setting things up so that supporting other ORM/ODMs in the future should be much easier to implement. When this is submitted it should resolve #7