Add support for map collections

This is a preliminary pull request to include support for map collection types. I'm starting this pull request to get feedback going so we don't continue developing this if there are better ways to do it.