[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
@kinncj No, it isn't related to BC. But in PHP world, there is a big number of programmers, who does not all have the same conventions (especially if one writes Class_With_Underscored_Name, other ClassWithCamelCasedName but someone else Classwithfulllowercasenameexceptfirstcharacter) and if you are instantiating such third-party classes, it is a good thing to at least partially keep your own or your core's conventions (because the code looks much better).