Make hasMany association decoding not make ephemeral record instances just to grab their ID.

 - This removes the ability for developers to add funky `id` accessors on their models as a simplifying optimization.
 - We used to have to build ephemeral record instances using the JSON data given, and then ask what their ID would be, and then use that value to look up potentially existent record instances in the identity map so that we can apply the JSON to that instance, and thus keep bindings consistently bound to server side data.
 - Instead of building that instance, we only build a new instance when we can't find something with the serverSideData[model.primaryKey], which I really hope is sufficient for everyone.
Switch to _makeOrFindRecordFromData for the polymorphic hasMany association as well.
Add some more requires such that the state machine file can be build as a source root (cause I want to use it for some other stuff :)
Make Enumerable's variables better named so as to be less mystical. Terseness is for suckers.
Fix a bug in reduce where the reduction function returning undefined caused undesirable return values.

A fault in the logic in Enumerable.reduce caused an issue where if the reduction function returned undefined, the "pick the first element of the enumerable to use as the initial value of the accumulator" logic to kick in (again, but later in the set usually). This is unexpected and wrong: the 100% should-always-be-the-case contract with reduce is whatever you return in the reduction function is the thing that gets passed to the next function, and if that thing is undefined, so be it.
Merge pull request #641 from Shopify/reduce_fix

Fix a bug in reduce where the reduction function returning undefined caused undesirable return values
build dist
fix bug when using arrays of models as the keys of a hash
another test, and better semantics
Merge pull request #643 from Shopify/fix_model_arrays_as_hash_keys

Fix using arrays as hash keys
build dist
Added deprecation mechanism.
Deprecate App.require methods.
Revert "Remove data-confirm functionality."

This reverts commit c9129473a0d14d57f2ddaa733ef5695424eda575.

Conflicts:
	lib/dist/batman.node.js
	src/view/bindings/event_binding.coffee
Deprecate data-confirm attribute.
Namespace deprecation in Batman.developer.
Restore to Muffin 0.6.2 in an effort to fix Node 0.6 compatibility
Build.
Update package.json and CHANGELOG.
Revert "Restore to Muffin 0.6.2 in an effort to fix Node 0.6 compatibility"

This reverts commit 9d756596097cef7d015b4908b65cfec2e2f569ad.