Let vasm use all the registers

Summary: Expand the unreserved registers for vasm (when compiling a whole
IRUnit, but not when compiling snippets of code via Vauto) to include
all usable registers (everything except rbx,r12,rsp,rbp).

Add an "args" mask to all the call opcodes to indicate which registers
are used (as register arguments) to the call. vasm-xls marks these used
by the call; prior to the call, there are copies into these registers,
so they are live from the copy to the call.

Reviewed By: @swtaarrs

Differential Revision: D1527672
Fix bogus type assertions from nested arrays

Summary: In the new test case hhbbc correctly figured out that after
the first [], we had an array all of whose keys were intergers,
and all of whose values were array(55). For the second [] it knew
that the base was either null, or array(55). As a result, it gave up
on trying to update the known value of the array - but didn't discard
what it already knew.

When we iterated the array, it then thought the value had to be null, or
array(55). We eliminate the null by the if/continue, and so it asserted
that it was an array of one element (it doesn't bother to assert the types).

There are two fixes. The first was to improve the type of the base. If the
base of an array is known to be null or array(55), and we push somthing onto
it, we should promote it to empty|array(55), and then do the push (the existing
code converted it to null|empty|array(55)). The second was to drop any
specialized information from the base type when we don't know how to update it.

Reviewed By: @edwinsmith

Differential Revision: D1529980
Fix APC test giving more time between add and fetch to make sure expiration takes place

Summary: Make sure there is enough time for expiration to take place

Reviewed By: @bertmaher

Differential Revision: D1508686