Override protected methods on java objects

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