Bug 937818, part 1 - Add objects to the purple buffer on AddRef. r=smaug

ICC uses this to track objects that have been AddRef'd during ICC graph building.
For those objects, we may not have the proper information for them, so treat them
as live.
Bug 937818, part 2 - Add js::ZoneGlobalsAreAllGray. r=jonco

If all globals in a zone are gray, then all live objects in that zone
should also be gray.
Bug 937818, part 3 - Add ScanIncrementalRoots(). r=smaug

Any object that has been stored away somewhere in the middle of incremental graph
building must be treated as live, because we can't trust that the CC graph has
accurate information about it. If such an object is truly garbage, we'll unlink it
in the next cycle collection instead.
Bug 937818, part 4 - Exceeded refcount nodes should already be black. r=smaug

Due to graph mutation during an incremental cycle collection, objects in the CC graph
may end up with more things pointing to them than they have a ref count. However, these
objects should never become garbage.