Eager loading refactor

* includes() no longer nukes the cache
* Adding an includes() clause once the cache is populated works as expected.
Removing the cache_documents options
The inverse associations of has_many are set automatically
Implementation of has_many :through using the eager loading functionality
refactor criteria.==
update gitignore
Cleanup and minor fixes
DocumentNotSaved should not throw an unprocessable_entity http error, but a 500