Fix #48: Reduce number of casts to implementation, increase interfaces, provide factory interfaces with default implementations
Merge branch 'master' of https://github.com/jmkgreen/morphia