[WIP] UnitOfWork refactoring

- Remove some of the additional complexity when working with embedded documents. Treat embedded documents like normal documents in the UnitOfWork as much as possible.
- Fix issue with ClassMetadata::associationMapping not inheriting associations correctly.
- Remove commit order calculator. We don't have to worry about referential integrity.
- Implement support for readOnly objects.
- Fix issue with re-persisting removed embedded document. #719 
- Cleanup exceptions.
Are these the immutable objects you were referring to in https://github.com/doctrine/mongodb-odm/pull/896#discussion_r13366101?