Added support for DynamoDB document attributes.

You can now specify additional DynamoDB attribute value types,
including:

* Hash
* Array
* true/false
* nil

These types can be nested, allowing you to send deeply nested
data to DynamoDB.

    ddb.put_item(table_name: 'table-name', item: {
      id: 'item-id',
      tags: ['cool', 'new', 'feature'],
      secret: nil,
      other: {
        nested: true
        deeply: {
          nested: true
          mixed: [1, 1.2, 'values', { objects: true }]
        }
      }
    })

Complex attributes are automatically un-marshalled into
Ruby natives:

    ddb.get_item(table_name:'table-name', key: {'id' => 'item-id'})
    => #<struct item= {
        "tags" => ["cool", "new", "feature"],
        "id" => "item-id",
        "other" => {
          "nested" => true,
          "deeply" => {
            "nested" => true,
            "mixed" =>  [
              #<BigDecimal:7fc6d1e33df8,'0.1E1',9(18)>,
              #<BigDecimal:7fc6d1e30f68,'0.12E1',18(18)>,
              "values",
              {"objects" => true}
            ]
          }
        },
        "secret" => nil
      }, consumed_capacity=nil>