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? :)