introduced immutable collection interface

Splitted the Collection interface into Collection and ImmutableCollection to make it possible to restrict access to your collection type and still have the benefits of the Doctrine Collection framework. This way you can force the use of add and remove methods in the Entity.

This could also lead to more efficient use of HHVM Collections in the future.
http://docs.hhvm.com/manual/en/hack.collections.immutable.php

Please comment on the idea and the naming of the interface.
Not completely sure about this, but the ```partition``` method could also be moved to the ```ReadableArrayCollection```.