Object-preserving map() function: mapValues

This adds the `mapValues` methods.

It works exactly like `map`, but preserves the object.

```
_.map2({a: 1, b: 2}, function(val, key) {
    return val * 2;
});
=> {a: 2, b: 4}
```

There are at least three issues about this function (#220 #1867 #1887), and as I also do this frequently it would be awesome to get this into underscore.
> Also, mind adding a test for inherited values from prototype?

sth. like this?

```
var proto = function(){this.a = 1};
proto.prototype.b = 1;
var obj = new proto();
deepEqual(_.mapValues(obj, _.identity), {a: 1});
```