Object mapper abstraction support.

My commit message has a bunch of info about my approach and goal with this patch. I am open and ready for suggestions on how to improve this. Thanks!