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.
I forgot to add it, shame on me.
I can move the implementation of ArrayAccess to the Collection class.  That would be no problem. But wouldn't it be confusing not having the possibility to use $constCollection['key']?