Ae fn functionality

review @tleach cc @nrschultz 
Rather than needing to do a `deepcopy` and call ourselves again, can't we just resolve the dynamic field type after we extract it from the field spec above (line 226)?

Bear in mind we also need to verify that the returned type is valid, just like we do in schema verification. 

```python
        # All fields should have a type
        field_type = field_spec['type']

        if callable(field_type):
            field_type = field_type(value)
            if not isinstance(field_type, type):
                raise SchemaFormatException('some failure message...')
```

I think it makes sense that we throw a SchemaFormatException here. It's not a validation failure - it's not the document we're validating which has the problem, it's our dynamic schema type.