Add collection accessor methods to Property

This allows you to manipulate with the underlaying collection in a KVO compliant way. Only supports ordered collections, so far.
Implement more collection accessors on Property

These collection accessors will make it easier to use with KeyValueChange objects.
Property returns collection only when is Array
Property supports consuming KeyValueChanges
Add support for multi-class Consumers

Consumer can declare multiple classes that they consumes and they don't have to fall back to common superclass, which would be mostly NSObject and would cause loss of proper class-validation.
Fix multi-class validation in Producer
Property declares consumed KeyValueChange class
Extract validation against multipel classes to Object

Previous implementation was simply wrong.
Merge branch 'feature/collection-mapping'

* feature/collection-mapping:
  Extract validation against multipel classes to Object
  Property declares consumed KeyValueChange class
  Fix multi-class validation in Producer
  Add support for multi-class Consumers
  Property supports consuming KeyValueChanges
  Property returns collection only when is Array
  Implement more collection accessors on Property
  Add collection accessor methods to Property