Flushing new collections

this includes and fixes https://github.com/doctrine/phpcr-odm/pull/477, https://github.com/doctrine/phpcr-odm/pull/480 and https://github.com/doctrine/phpcr-odm/pull/483

basically what we aim to achieve here is to convert all collections (including ``null`` values) to PersistentCollections on flush. furthermore we ensure that only the changes explicitly done to those collections are written back to the database to prevent unwanted changes. furthermore it is now possible to explicitly refresh the state of a collection with that in the DB.

the final thing that is still missing in this PR is the ability to overwrite a PersistentCollection causing any state in the database to be overwritten with that of the new collection.
this is another BC break but its intentional.