Allow newInstanceFor<fieldKey> to override default constructor

`newInstanceFor<fieldKey>` should be implemented if a default alloc init
is not the right approach.

This is mainly the case when using `NSManagedObjects` since they need to
be inserted into a `NSManagedObject`, but can also be useful to set
certain default values that you'd rather not have in your `init` method.
Fix insert/delete behaviour for NSSet collections

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

Instead, we now use `containsObject:`, `removeObject` and `addObject:`
Fix crash when deleting a row that contained the current firstResponder
Delete unnecessary beginUpdates / endUpdates statements
Show modal viewcontroller if new instance conforms to the FXForm
protocol