Setup proxy methods for getOption and bindEntityEvents

Taking another crack at proxying `getOption` and `bindEntityEvents`. 

The first attempt: overload the helper methods,
The second attempt: add seperate proxy methods to each class,
The third attempt: add instance level proxy methods in the helper files.

I like the third option the best because it does not affect the original static helper functions, but it does also express succinctly how they're being proxied on the objects.

this fixes #927.

note:
A lot of the initial work came from @fenduru. He did 90% of the work for this.