[PHP7] Add support for package private class, trait and interface

Consumes PR #931 

TBD together with RFC

Implementation progress:

* [x] Add lexical support for public classes, traits and interfaces
* [x] Make sure public classes, traits and interfaces are supported correctly
* [x] Add lexical support for private classes, traits and interfaces
* [x] Implement compile time checks for private extension and implementation
* [x] Implement run time check for private class instantiation
* [ ] Find a sponsor to review and help polish implementation
* [x] Implement `ReflectionClass::isPublic()` and `ReflectionClass::isPrivate()`
* [x] Implement `ReflectionClass::setAccessible()`

Add more tests coverage for:

ReflectionClass:

* [x] Add test for `ReflectionClass::isPublic()` with implicit value
* [x] Add test for `ReflectionClass::isPublic()` with explicit value
* [x] Add test for `ReflectionClass::isPrivate()` with explicit value
* [x] Add test for `ReflectionClass::setAccessible()`

Classes:

* [x] Top level private class, top level instantiation
* [x] Top level private class, top level class instantiation
* [x] Top level private class, top level class extension
* [x] Top level private class, different namespace class instantiation
* [x] Top level private class, different namespace class extension
* [x] Namespaced private class, top level instantiation
* [x] Namespaced private class, top level class instantiation
* [x] Namespaced private class, top level class extension
* [x] Namespaced private class, same namespace class instantiation
* [x] Namespaced private class, same namespace class extension
* [x] Namespaced private class, different namespace class instantiation
* [x] Namespaced private class, different namespace class extension
* [x] Any of the above test using autoloading

Interfaces:

* [x] Top level private interface, top level class implementation
* [x] Top level private interface, different namespace class implementation
* [x] Namespaced private interface, top level class implementation
* [x] Namespaced private interface, same namespace class implementation
* [x] Namespaced private interface, different namespace class implementation
* [x] Any of the above test using autoloading

Traits:

* [x] Top level private trait, top level class usage
* [x] Top level private trait, different namespace class usage
* [x] Namespaced private trait, top level class usage
* [x] Namespaced private trait, same namespace class usage
* [x] Namespaced private trait, different namespace class usage
* [x] Any of the above test using autoloading
Extremely disagree.
PHP is evolving, and developers should do so...

It was the same with the **regex** *\e* operator or even **ereg_***

It's natural that ```Class_With_Underscored_Name``` represents a
*package* name and folders + class name are logically uppercase, as @shiroyuki 
said: . *For instance, some filesystems, e.g., EXT4, allow files named ```User.php```, ```uSer.php``` and ```user.php``` respectively to exist in the same folder. How would developers implement autoloader to pick? Which one is the chosen one?*
The same works with ```ClassWithCamelCasedName```

Nowadays vendors are really committed to **quality**, we are not talking about
*orphan libraries in PEAR...*

Anyway, it's out of scope of this PR.