New Query Engine, Cross-collection Query, Driver-driven ORM

This PR is to allow users to do cross-collection queries with the new query engine. Additionally, the code (ORM) is rewritten to allow extension from different backend storage.

For the record:
- Started: 2014.03.07
- Finished: 2014.07.21