Deny private/protected properties access

This PR tries to fix #68 

The current implementation of this fix has no abstraction and is not good enough. Since a lot of code is duplicated, I won't merge this edge case fix until a major cleanup is applied.

Tests fail because of code generation assertions being screwed up

Ping @leedavis81 can you check the newly introduced tests and see if they are satisfying? :)

 - [x] simulate fatal failures on unallowed property access
 - [x] fix unallowed property access
 - [x] realign existing test suite to code changes
 - [x] add coverage for newly introduced classes