Do not try to invoke handles when types mismatch

When calling a getter or setter style method and the property is a method handle, the invocation is
not made when types mismatch. In such cases a getter-style invocation returns the method handle, and
a setter-style one just updates the entry.

This is also an improvement over the previous implementation since it does not throw exceptions and
opens a broader usage scope.