Fix using a field name different from attribute name

Currently overriding `Field.name` not works as expected:
```python
class CollectionTest(Collection):
    new_field = StringField(name='string_attr')
```
I added a failing test in one commit, and next fixed it.

(This branch is based on tahajahangir/master, see [network](https://github.com/tahajahangir/mongotor/network))