Handle a bunch more edge cases. Fix bad return values for set/defineProperty