always_assert in ArrayTracer and change {Mixed|Packed}Array::Release calls

Summary: Change {Mixed|Packed}Array::Release calls to instead indirectly go through
g_array_funcs so that ArrayTracer can intercept them.

Before we were hitting bad asserts because we would release ArrayData's and
then allocate a new ArrayData at the same address, confusing ArrayTracer's
tracking.

Reviewed By: @markw65

Differential Revision: D1617464