Replace id<EKEnumerable> with instancetype where appropriate

Now, wherever each: or eachWithIndex: is used, selectors specific to
the receiver can be sent without a compiler warning. Previously, this
would generate a compiler warning:

    NSArray *nums = @[@1, @2, @3];
    NSNumber *first = [[nums each:^(id n){
        NSLog(@"%@", n);
    }] objectAtIndex:0];

This may not be very good style, however it's a good thing that the
what the compiler can infer about the type of the collection is now
accurate.