Add dirty tracking for nested objects

This is currently WIP, as the last test case is still failing. 

Objects are now recursively cloned, so that it is possible to track changes in `isEqual`.