[WIP] 3.0 multi primary key

Sorry for the large diff, implementing this feature required touching a lot of classes. This adds full support for composite primary keys in all CRUD operations, marshalling and associations eager loading.

TODO:

* [ ] Make find('list') work with composite keys
* [ ] Make find('threaded') work with composite keys