Improve ArrayAccess enumeration

When enumerating an ArrayAccess-style object the array keys should be
returned, not the method names & properties of the PHP object.
Implement delete behaviour on ArrayAccess objects
Implement isset behaviour on ArrayAccess objects
Refactor PHP method call code