Feature collections

Add collection semantics
  
    NSArray *array = @[ @1, @2, @1, @3 ];
    expect(array).elements.to.equal(@1); //=> (1)=> expected: 1, got: 2, (3)=> expected: 1, got: 3
  
    NSSet *set = [NSSet setWithArray:array];
    expect(array).elements.to.equal(@1); //=> (element)=> expected: 1, got:2, (element)=> expected: 1, got: 3

Reduce complexity of `applyMatcher:`