EZC: replace multiple skipif files with config.skipif
Remove unused function ArrayIter::zSecond()

Unused since my commit "EZC: Fix hashtables and resources"
EZC: clean up unused variable, namespace style

* Remove unused variable
* Move ZArrVal and friends to the HPHP namespace
EZC: fix proxying in zBoxAndProxy()

* Don't proxy arrays that are already proxies, that's inefficient
* Make a copy of the inner array prior to proxying it. It's necessary to
  copy arrays to provide the necessary semantics, and it was previously
  done in ZArrVal, but ZArrVal only has access to proxy arrays, and it
  is difficult for an external caller to tell whether the inner array
  has refs.
* Make copies of static arrays, as well as ones with multiple refs.
  Modifying static arrays is not polite -- added test case which
  previously failed.
EZC: fix constness issue in zend_hash_*

Fix the issue identified by jdelong regarding modification of array
elements without proper COW handling:
* Use MArrayIter for all iteration, instead of integer positions. This
  allows modification of the value references.
* In ProxyArray, store the inner array inside a RefData, so that
  MArrayIter can find the inner array via the RefData.
* Make the RefData mutable so that it can be modified by read
  operations.
* Now that the RefData is mutable, reseatable() can be called on a const
  ProxyArray. But this is somewhat awkward when reseatable() passes
  through its return value -- the constness of the return value would
  have to match the constness of the parameter. Make it return void
  instead.
* Implement ZEND_HASH_APPLY_REMOVE -- trivial now that MArrayIter is
  used.
* Unimplement zend_hash_move_backwards_ex() on an external cursor --
  MArrayIter does not implement reverse iteration.
EZC: fix release build

The definition of _zval_ptr_dtor_wrapper is missing in a release build,
which means that the extern "C" is not present, and so an undefined
reference error is given on link. _zval_ptr_dtor is meant to be used.
Make ALWAYS_ASSERT work

ALWAYS_ASSERT didn't do anything, perhaps because various assertions
were depending on debug mode being active, and would fail with a compile
error if it was not.

* Removed all assignment expressions from assert() invocations. Some
  were accidental (equality was intended), some were accidentally
  nonfunctional due to shortcut evaluation (true || foo), and the rest
  were incompatible with ALWAYS_ASSERT.
* Introduced debug_assert() as a shortcut for an assert() which is only
  done in debug mode.
* Replaced a not_reached() call with a more informative assertion.
EZC: fix rename of ezc_array_set() to ezc_array_val_set()