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
Use updater and deleter when staging collection updates
More elegant way to deal with initializing record instances

Instead of calling ::alloc.initialize from a new_empty method, instead alias
::new to ::new_empty, then define ::new to create a new record and call the
additional #initialize_new_record method. This should make things a lot saner
in the inheritence chain since subclasses/modules can just override either
 #initialize or #initialize_new_record as appropriate.
Don't attempt to undefine methods that aren't defined

For compatibility with different versions of things
Apply collection modifications post-hoc

If we modify a collection before loading it, record the local modifications to
the collection and apply them if it's loaded later.  E.g., in the following
scenario:

``` ruby
post = Post[1]
post.tags << 'hey'
post.tags #=> ['stored', 'values', 'hey']
```
Run tests against Rubinius in 1.9 mode
Add Travis configuration