[Bugfix Beta] Improve Ember.Map

* [Perf + ES6] no longer clone array before enumeration (dramatically reduce allocations)
* [Perf] Don’t rebind the callback of forEach if not needed
* [Perf + ES6] no longer allow Map#length to be bindable
* [Perf] don’t double guid keys, as they are passed from map to ordered set (add/remove)
* [ES6] deprecate Map#remove in-favor of the es6 Map#delete
* [ES6] deprecate OrderedSet#remove in-favor of the es6 OrderedSet#delete (to be aligned with es6 set)
* [ES6] error if callback is not a function
* [ES6] Map#set should return the map. This enables chaining map.`map.set(‘foo’,1).set(‘bar’,3);` etc
* [ES6] remove length in-favor of size.

- [ ] run tests on all platforms (coffee shop wifi isn't up to par)
- [ ] we have some extra functionality not in es6 such as clear + copy (what do @wycats r?)
- [ ] removed length in-favour of size (breaking change) I can support length if needed, someone tell me (@wycats r?)
- [ ] removed observable length entirely (it can be restored, but it was 1. a mistake 2. slowish) (@wycats r?)
I am not seeing where you update `length` internally (all the cases seem to be setting `this.size`), but it should be pretty easy to update `deprecateProperty` (with a `readonly` flag) to just drop the setter assertion.