RUBY-649 Operations

This pull request adds in Operation models.

#### Namespaces:
Top level namespaces are Read and Write
Write then has a WriteCommand namespace

#### Functional Modules:
Executable is a functional module that is included in each Operation class.

### Classes

* Aggregate (sometimes a read, sometimes a write)
* MapReduce (sometimes a read, sometimes a write)
* Command (sometimes a read, sometimes a write)

    #### Read

    * Query
    * GetMore

    #### Write

    * Delete
    * Insert
    * Update
    * WriteCommand namespace
        * Delete
        * Insert
        * Update

### Notes about #execute
The write operations (delete, update, insert) get a server to use from the provided client and check the wire version. If the a write command should be used instead, a write command message is constructed and sent.

#### Todo
* Updates after the connection API is defined. Especially for the exhaust query option.