Added HasDynamicMethodInvocation

HasDynamicMethodInvocation makes it easier to call invokeMethod on ScalaObjectReference objects. Now instead of something like obj.invokeMethod("methodName", thread, param).asInstanceOf[ScalaValueReturnType], you can type obj.methodName[ScalaValueReturnType](param) given that there is a thread in implicit scope.