EZC: implement free_storage and clone handlers

The first commit is a duplicate of #2733, only the second commit is new.

* Move object bucket store to its own class
* Implement storage of dtor/clone etc. function pointers as in Zend, instead
  of just storing a single void*
* Call free_storage and clone handlers as appropriate
* Make m_handle match the handle type in the Zend headers
* Fix singleton style in ZendExceptionStore to allow getInstance() to be
  inlined
* Add tests
* Add php_printf(), required by tests