Bug 807525 - Have embedjs.py append newlines when not present. (r=till)
Part 1: Replace old code with core parallel intrinsic
Part 1.1: Bail out of parallel if can't stay dense
Part 1.2: Add some intrinsic utilities
Part 1.2a: Un-self host the constructor; fix some intrinsics

We can't self host the constructor fully because we can't set the clasp to be
ParallelArrayObject::class_ over ObjectClass
Part 1.3: Compile intrinsics in Ion
use LCallInstructionHelper instead
Unbreak regalloc merge botch
reorder so that passABIArg are not separated
Part 1.2b: Fix off-by-1 in warmup and ensure dense elements
Part 1.4: Un-hole-guard unsafe writes to self-hosted buffer
Part 1.5: Record invocations during parallel warmup, then compile
Bug 808949 - Remove call to clearType in cloning functions
Part 1.5a: Invalidate on parallel bailout
Monitor compiled intrinsics that haven't been called yet
Fix eager compilation not adding correct intrinsic type
Use TypeScript::Monitor instead
Change FillArray API to BuildArray

FillArray expected a pre-constructed dense array. This was problematic in
implementation as FillArray had to ensure that it was initialized with holes
up to the specified length so that the kernel may run without bailing on
bounds checks. However, if we *did* bail, this resulted in a dense array with
JS_ARRAY_HOLE between its length and initializedLength being passed to the
self-hosted constructor. This violates the initializedLength invariant.

NB that we violate this invariant anyways for inside parallel code. But since
the write to the buffer is already unsafe, we just don't emit any
LStoreElementTs and always emit LStoreElementVs in Ion.
Part 1.6: Rip out multidimensional parallel array TI logic
Fix BuildArray comment