added deserialize_from option to BaseType to specify a foreign key(s) from which to initialize the field

This pull request / changeset adds the `deserialize_from` option to BaseType and `deserialize_mapping` to `Model.__init__`.

## Embedded in the Model
```python
def test_model_deserialize_from_with_list():
    class User(Model):
        username = StringType(deserialize_from=['name', 'user'])

    assert User({'name': 'Ryan'}).username == 'Ryan'
    assert User({'user': 'Mike'}).username == 'Mike'
    assert User({'username': 'Mark'}).username == 'Mark'
    assert User({'username': 'Mark', "name": "Second-class", "user": "key"}).username == 'Mark'
```

## Passed to the Model on Init
```python
def test_model_import_with_deserialize_mapping():
    class User(Model):
        username = StringType()

    mapping = {
        "username": ['name', 'user'],
    }

    assert User({'name': 'Ryan'}, deserialize_mapping=mapping).username == 'Ryan'
    assert User({'user': 'Mike'}, deserialize_mapping=mapping).username == 'Mike'
    assert User({'username': 'Mark'}, deserialize_mapping=mapping).username == 'Mark'
    assert User({'username': 'Mark', "name": "Second-class", "user": "key"},
               deserialize_mapping=mapping).username == 'Mark'
```

## Import data into an initialized Model
```python
def test_model_convert_with_mapping():
    class User(Model):
        username = StringType()

    mapping = {
        "username": ['name', 'user'],
    }

    user = User()
    val = user.import_data({'name': 'Ryan'}, mapping=mapping)
    assert user.username == 'Ryan'
```