[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
* [ ] Implement `ReflectionClass::isPublic()` and `ReflectionClass::isPrivate()`
* [ ] Implement `ReflectionClass::setAccessible()`

Add more tests coverage for:

Classes:

* [ ] Top level private class, top level instantiation
* [ ] Top level private class, top level class instantiation
* [ ] Top level private class, top level class extension
* [ ] Top level private class, same namespace class instantiation
* [ ] Top level private class, same namespace class extension
* [ ] Top level private class, different namespace class instantiation
* [ ] Top level private class, different namespace class extension
* [ ] Namespaced private class, top level instantiation
* [ ] Namespaced private class, top level class instantiation
* [ ] Namespaced private class, top level class extension
* [ ] Namespaced private class, same namespace class instantiation
* [ ] Namespaced private class, same namespace class extension
* [ ] Namespaced private class, different namespace class instantiation
* [ ] Namespaced private class, different namespace class extension
* [ ] Any of the above test using autoloading

Interfaces:

* [ ] Top level private interface, top level class implementation
* [ ] Top level private interface, same namespace class implementation
* [ ] 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
* [ ] Any of the above test using autoloading

Traits:

* [ ] Top level private trait, top level class usage
* [ ] Top level private trait, same namespace class usage
* [ ] Top level private trait, different namespace class usage
* [ ] Namespaced private trait, top level class usage
* [ ] Namespaced private trait, same namespace class usage
* [ ] Namespaced private trait, different namespace class usage
* [ ] Any of the above test using autoloading
@kinncj No, that's not so good idea. :-(