Allowing moment.set() to accept a hash of units

Setting multiple values using the chaining API is awkward and verbose.

Currently:
```javascript
moment().set('year', 2011).set('month', 9).set('date', 12).set('hours', 6).set('minutes', 7).set('seconds', 8);
```

After this patch, the current API is supported, as well as using a hash of values:
```javascript
moment().set({ year: 2011, month: 9, date: 12, hours: 6, minutes: 7, seconds: 8 });
```

PR includes a passing test for the new behavior.