Override protected methods on java objects

This pull request fixes an issue when overriding protected methods.

This fix will search for protected methods in the class hierarchy so they can be defined in the bytecode following the current behavior for public methods.

The issue will still exist when binding the function after instantiation. I added 2 test cases with @Ignore showing this problem.