Split NewPackedArray into multiple IR nodes

Summary: NewPackedArray currently calls out of line to a C++ helper
function which allocates a new PackedArray and populates it with values
previously pushed to the stack. We'd like to inline all of this for
sufficiently small array literals.

The first step is to break NewPackedArray into its subcomponents, namely doing
the array allocation (which is represented with AllocPackedArray) and then
initializing each of the slots in the array with previously computed values
(which is represented with InitPackedArray).

Also added InitPackedArrayLoop as an alternative to InitPackedArray if the
array literal has more elements than we're comfortable unrolling.
It iterates back up the stack, copying values into the newly allocated
packed array.

Reviewed By: @jdelong

Differential Revision: D1587607