Initial coalesce operator implementation
Added test
Ensure not evaluated twice
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