Add groupBy

An implementation of groupBy. It returns an instance of Ember.Map whose keys are the various values being grouped on and whose values are arrays of elements corresponding to the groups.

/cc @hjdivad I could use your help on some of the issues mentioned in the line notes.

Self-indulgent demo:

http://emberjs.jsbin.com/eJecAHOG/1/edit

Usage:

```javascript
Game = Em.Object.extend({
  players: null,
  teams: EmberCPM.Macros.groupBy('players', 'team')
});

game = Game.create({
  players: [
    Em.O({name: 'Jack', team: 'red'}),
    Em.O({name: 'James', team: 'red'}),
    Em.O({name: 'Jacob', team: 'blue'}),
    Em.O({name: 'Jeremy', team: 'blue'})
  ]
});

teams = game.get('teams'); // instance of Ember.Map
teams.get('red').mapBy('name'); // ["Jack", "James"]
```