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.

finally we now ensure that Collections do not magically update themselves in some situations .. essentially they just manage whatever has been assigned to them manually or what was assigned to them with the initial fetch from PHPCR. use the new ``$collection->refresh()`` method to fetch the current PHPCR state.
well its somewhat similar .. however it is very different for ChildrenCollection .. so i do not think its worth it to try and reduce the duplication.