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.
merge upstream