Bug 825714: Refactor JS allocation routines to enable allocation on parallel
threads, and move various ion fields into per-thread-data. r=billm

More detailed:
- A new routine JSObject::parExtendDenseArray() that permits parallel code to
  allocate a dense array on its own Allocator.
- Create an allocation path in the GC for loading a fresh arena as needed
  (ArenaLists::parallelAllocate()).
- Ensure that if GC is triggered during parallel execution, parallel execution
  is aborted and the request is deferred until parallel execution terminates.
- Updates to the ForkJoin/ThreadPool so that they create their own Allocators
  as well as other misc API changes.
- Moves some of the ion-related fields (e.g., |ionTop|) into perThreadData.
- Remove out-of-date malloc tracking fields.