Fix insert/delete behaviour for NSSet collections

NSSet doesn't support `objectAtIndex:`, `removeObjectAtIndex:` or
`insertObject:atIndex`.

Instead, we now use `containsObject:`, `removeObject` and `addObject:`