Add CPRegexpRecogniser that match a regular expression and return any kind of token

This recognizer allow us to define a keyword by using a regular expression and a "match handler"

For example, following Tokenizer:
```objective-c
CPRegexpKeywordRecogniserMatchHandler matchHandler = ^(NSString* tokenString, NSTextCheckingResult* match){
    NSString* matched = [tokenString substringWithRange:match.range];
    return [CPKeywordToken tokenWithKeyword:[matched stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]];
};

[tokenizer addTokenRecogniser:[CPIdentifierRecogniser identifierRecogniser]];
[self addTokenRecogniser:[CPRegexpRecogniser recogniserForRegexp:[NSRegularExpression regularExpressionWithPattern:@"[ \t\r\n\f]*(>)[ \t\r\n\f]*" options:0 error:nil]
                                                        matchHandler:matchHandler]];
[tokenizer addTokenRecogniser:[CPWhiteSpaceRecogniser whiteSpaceRecogniser]];
```

will match ``table ~ a`` as ``<Identifier: table> <Keyword: ~> <Identifier: a>``. This is much more powerful than standard keyword recognizer and can be handy in some use case (such as trimming spaces in token)