A new way to query Core Data (KFObjectManager)

This removes dozens of category methods on managed object which are now
replaced by the new `KFObjectManager`. This manager is an immutable
object which can be used to create fetch requests and optionally
execute them.

The new approach also handles passing NSError's back instead of silently
handling failures.

Examples of usage:

```objective-c
KFObjectManager *manager = [Person managedInManagedObjectContext:moc];

NSLog(@"We have %d people!", [manager count:nil]);

for (Person *person in manager) {
    NSLog(@"Hello %@", [person name]);
}
```

```objective-c
KFObjectManager *manager = [[Person managedInManagedObjectContext:moc] exclude:[[Person name] equal:@"Kyle"]];

NSLog(@"We have %d people (excluding Kyle)!", [manager count:nil]);
```