Add better support for objects

DESCRIPTION
- When an observable contains an object, changing a property would change
the default. All default values are now deep-cloned to prevent this.
- Added a utility function to force isDirty flags to update.
- Updated README
- Added 2 tests for objects