Add fields.map

We have a practical problem about fields.Nested.
Sometimes we cannot predefine key in the output fields schema for the data fetched from database:
In the example, `key1` and `key2` are both from database:

```python
    data = {
        'map': {
            'key1': 'some value',
            'key2': 'other value'
        }
    }
```

But `Raw` is not enough, so I try to define a new fields: `Map`:

Usage:

```python
    schema = {'map': fields.Map(fields.String(), fields.String())}
    marshal(data, schema)
    # Output: OrderedDict([('map', {u'key2': u'other value', u'key1': u'some value'})])
```

It's also have `allow_null` attribute:

```
In [8]]: data = {
   ...:     'map': {
   ...:         'k': 'v',
   ...:         'NoneValue': None,
   ...:     }
   ...: }
In [9]: schema = {'map': fields.Map(fields.String(), fields.String(), allow_null=True)}

In [10]: marshal(data, schema)
Out[10]: OrderedDict([('map', {u'NoneValue': None, u'k': u'v'})])

In [11]: schema = {'map': fields.Map(fields.String(), fields.String(), allow_null=False)}

In [12]: marshal(data, schema)
Out[12]: OrderedDict([('map', {u'k': u'v'})])
```