Added support for error message parsing from 422 responses in more recent versions of Rails while maintaining backwards compatibility with older versions of Rails.

JSON responses from 422 errors in earlier versions of Rails:

{"name":["can't be test","must be valid"]}

JSON responses from 422 errors in recent versions of Rails:

{"errors":{"name":["can't be test","must be valid"]}}

This fixes issue #567.
Merge branch 'master' of git://github.com/Shopify/batman
In IE7, it is not possible to get a character from a string using the box [] notation.
This caused IE8 to go return defined, enter a continious loop and then cause a stack overflow error.

Amended the offending lines to use charAt instead.
Merge pull request #574 from meskyanichi/master

Fixed error message parsing for recent versions of Rails.
Merge pull request #631 from ToMoCoop/ie7-stack-overflow-fix

IE7 Fix for View Store that caused an infinite loop and eventually a stack overflow exception
Build
Expose source tracker stack validity for debuggability.
Bump muffin for CS 1.4
Fix a bug where pushing multiple dummy source trackers would cause major breakage in the source tracker stack down the line.
Make SetIntersection and SetComplement skip a function call if there are no items to actually do anything with.
Make the SimpleSet constructor filter out any non-existent values for the splatted arguments to add.

We found in our application and very occasionally in the tests calling `new Batman.Set` to have a length of one and the item `undefined` be in the set. So, so weird. We couldn't reliably reproduce the issue nor figure out any sort of pattern to trigger it more often either. I caught a breakpoint once or twice where calling `newSet = new Batman.Set;`, missing braces, would have `arguments = [undefined]` in the Set constructor. This to me smells like an bug internal to the VM, since it was completely inconsistent, contract violating, and unlike anything I've ever seen before. So, we get around it for the time being by disallowing submission of undefined or null as one of the arguments to the Set or SimpleSet constructor. You can still explicitly `set.add(undefined)` later if you want.
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