Implement Summary for MongoDB

closes #584
Using get seems fine.  I would just break out the naming dict.  Subjectively the following feels better to me

```Python
reduction_names = {mean: 'avg'}

def group_apply(...)
    ....
    query = dict((k, reduction_names.get(type(v), type(v).__name__), ...)
```