Update Object.keys

- cache reusable methods
- check for otherwise non-enumerable keys
- add tests

Resolves #99