Refactored UCI engine class and lots of other things

- Significantly improved UCI engine class. Replaces NSNotificationCenter pattern with a delegate, favors Objective-C setters over method calls, uses GCD dispatch groups to avoid race conditions when stopping analysis, increases abstraction with new SFMUCILine class to represent a line of analysis
- New containsString category method on NSString
- New "object after object" category methods on NSArray
- Fixed animation glitch on the board view