- Overload ZEND_INIT_FCALL_BY_NAME and ZEND_DO_FCALL opcodes to do overloading of functions, instead of moving zend_function structs around. This implementation allows you to overload a function with anything callable (closure, simple callback, method callback).

- Removed rename_function as it serves no purpose anymore (and it doesn't match semantically with the overload implementation). This obviously might break stuff. 

- Introduced new functions overload_function() and restore_functions()

- Added a few new tests
Merge remote-tracking branch 'mathieuk/overload_functions' into merge_mathieuk

Conflicts:
	test_helpers.c

Merge is not clean, but works pretty good.  Tests don't pass for overloaded
methods on classes.