Reflection compliance

This pull request aims at achieving a greater level of compliance with the original PHP reflection API. It uses [these behaviour tests](https://github.com/thekid/behave/tree/hhvm/src/test/php/ext/reflection) to verify the Reflection classes' functionality.

These bugs are fixed:

* #1598 - ReflectionParameter::canBePassedByValue()
* #1596 - ReflectionClass::isCloneable()
* ~~#1358 - Zend incompatibility: ReflectionParameter's function name should accept closure, not only string~~ (fixed independently by facebook/hhvm@aaf59cb468a0acbe1a25a09cd2d4a67e7e76e4da)
* #1572 - Reflection classes should have a __clone method
* #1499 - ReflectionMethod wrong resolution of constants as default parameter value.
* #1353 - Behavior diff: ReflectionMethod::getClosure() does not work
* #1357 - Behavior diff: ReflectionParameter::isDefault() reports TRUE when optional parameter is before required one
* #1571 - Zend incompatibility: string casting a ReflectionParameter does not produce the expected result (+ added __toString for all other classes)
* #1665 - ReflectionParameter::getClass() throws exception when parameter is typehinted as 'bool'
* #1721 - ReflectionMethod->invokeArgs doesn't work on static methods when an instance is passed
* #1699 - HHVM/PHP return different values for \ReflectionFunction::getName() for closures in namespaces
* #1728 - When invoking an inherited method with a ReflectionMethod, get_called_class() mistakenly returns the parent class
* #1770 - Reflection API Issues
* #2057 - Reflection: FilesystemIterator uses unknown class as type-hint

Furthermore, these issues are addressed:

* Support for `parent` and `self` as parameter type hints
* Missing ReflectionFunction::inNamespace(), isDeprecated(), getExtension(), getExtensionName()
* ReflectionFunction::getStaticVariables() returns string representations of statics, not the actual values
* Fix BadMethodCallException for ReflectionClass::getExtensionName()
* ReflectionClass::isAbstract() does not return true for traits
* ReflectionParameter::__toString should include indicator whether passed by reference
* ReflectionFunction does not have a public name member
* ReflectionParameter::isDefaultValueConstant() is missing
* ReflectionParameter::getDefaultValueConstantName() returns PHP code instead of constant name

There are [still differences to the PHP API](https://github.com/thekid/behave/compare/hhvm#files_bucket) which I could not or did not address here (e.g. all extension related reflection - HipHop's concept seems to work differently than PHP's, I still haven't quite understood how this could be made to work) and cases in which PHP raises errors, where HipHop throws exceptions for self-consistency.