Move smart_str implementation into Zend/

So we can use it there as well...

For now I've retained the zend_smart_str_public.h header, though
it would probably be better to just move that one struct into
zend_types.h.
Use smart_str in get_function_declaration

Instead of custom smart string implementation
Use smart_str for exception stack traces
Rename smart_str_append to smart_str_append_smart_str

It's used only rarely and I'm running out of append names...
Add smart_str_append for appending zend_strings

Also replaces usages in Zend/ and ext/standard
Fix two memory errors by interning earlier
simplify the condition
fix the REPARSE_DATA_BUFFER struct def
added a comment
Replace IS_OP?_TMP_FREE() with more clear (OP?_TYPE == IS_TMP_VAR)
Make error paths to be UNEXPECTED
Optimized unset()
Specialization (only IS_VAR ad IS_CV operands may be references)
Avoid useless reference counting
Remove php_varname_check

This is a leftover from PHP < 5.4.

Also removed the php_create_empty_class declaration, which no longer
exists.
Fix list() destructuring to special variables
Fixed typo
Remove static allocator

We didn't even compile this file anymore
Remove zend_dynamic_array

This was introduced back in 2000 to test a new hashtable
implementation and is no longer used.
Fix tests/serialize/bug64146.phpt

The var hash now retains a reference to its elements, to ensure
that addresses are not reused.

Furthermore the var hash now only stores objects and references
and directly uses their pointer as key, thus making serialization
about two times faster.