Add optional kwarg 'attribute_name' to Field

Implements most of #16 (doesn't handle conflicts)

attribute_name, if defined, will be used as the column name
in AWS DynamoDB, while the field will still be bound to the
model by its name.  For example:

    class MyModel(Model):
        field = Field(attribute_name='f', hash_key=True)

    m = MyModel('uuid')
    print(m.field)  # Prints 'uuid'
    get_engine().save(m, overwrite=True)

The table for this model in AWS DynamoDB would have hash key 'f'.
This for loop could be slow in a model that declares many fields. I think we may need to store a reverse mapping of all the aliased fields so we can do a faster lookup