Further work on custom object support

- Before this commit, users needed to pass the self parameter explicitly when calling methods, this was now fixed by wrapping the methods in MethodWrapper class that passes the self argument automaticaly