Read operations

Define `Model::find` to eagerly load data and `Model::[]` for lazy loading.

`Model#save` and `Model#destroy` for write operations.
Basic reading and hydrating of models

Define Model::[] for lazy loading

Improvements to basic read operations
Create/update/delete
List support for Model
Set column support in model
Support for Map in model

Remaining to do:

* Refactor metal updates to allow multiple types of operation per statement
* Get list spec up to date with better set/map specs
* Refactor collections to use better metal update stuff
* Handle modify-then-load scenario