Implement remaining methods for TypeCollection

Add all the same implementation than the ArrayCollection from doctrine, but adds the validation for a typed class