Add _.transform method

`_.transform` is a useful alternative to `_.reduce` that calls the iterator with `accumulator` object each time and then returns it.

This is useful for creating new objects applying transformations of another object.

```js
_.transform([1, 2, 3, 4], function(accumulator, value, index, original) {
  arr[index] = value * 2;
});
// >> [2, 4, 6, 8];
```

```js
_.chain({ foo: 'foo', bar: 2, baz: 3 })
 .values()
 .filter(_.isNumber)
 .transform((arr, val, i) => arr[i] = val * 2)
 .value();
// >> [4, 6];
```

There was a [previous issue](https://github.com/jashkenas/underscore/pull/1112) on a similar function with the same name, however I think lodash has [fully fleshed](https://lodash.com/docs#transform) it out and is much more useful in this form.

I've taken the lodash implementation and tried to make it consistent with some of underscore's behavior.

- No Object.create for obj.constructor
- Can't return false to exit

Ref: @megawac https://github.com/marionettejs/backbone.marionette/pull/2009#issuecomment-60128932
The `create` use of `_.transform` came before the actual `_.create` method for me. It's a nice to have. The rationale for having it is you're transforming a value so the result should be of the same constructor. I've taken this approach in our clone method too preferring clones to be of the realm their original values. For me the biggest win is the ability to exit early and not providing a default accumulator so the `create` can be seen as a non-critical requirement that could be added at a later time.