Prevent adding a state which name is already persistent

Also keen on adding `addStateWithName:`, would you like me to add it?

I've implemented the method in a category, looking like this:
```objc
-(TKState*) addStateWithName:(NSString *)name
{
    if (! [name isKindOfClass:[NSString class]]) [NSException raise:NSInvalidArgumentException format:@"Expected a `NSString` object, instead got a `%@` (%@)", [name class], name];

    TKState *state = [TKState stateWithName:name];

    [self addState:state];

    return state;
}
```