Dynamic findBy, findAllBy, create, hasProperty methods on NSManagedObject

This pull request modifies NSManagedObject so that any subclass can call methods of the form

`[MyManagedObject findByName:@"Foo"]`

and 

`[MyManagedObject findAllByUuid:@"F_b_o_a_o_r"]`

It works for any subclass of NSManagedObject, and returns nil if the property does not exist in the class.

Edit:
It now also adds some other ActiveRecord-like features. There are two new ways to create records: with a dictionary and with a block.

    Record *newRecord = [Record create:[NSDictionary dictionaryWithObjectsAndKeys:@"Squash", @"name", @"Vegetable", @"type", nil]];

or with the new ObjC syntax:

    Record *newRecord = [Record create:@{@"name" : @"Squash", @"type": @"Vegetable"}];

And with a block (requires LLVM >=3.1):

    Record *newRecord = [Record createWithBlock:^(Record *n) {
            n.name = @"Onion";
            n.type = @"Vegetable";
    }];

There's a new save method that you can call on an instance of a class rather than the class:

    [newRecord save:&error];

In addition to the dynamic findBy and findAllBy methods, there are now find and findAll methods that take an NSDictionary:

    Record *record = [Record find:[NSDictionary dictionaryWithObjectsAndKeys:@"Apple", @"name", @"Fruit", @"type", nil]];

or, with new syntax:

    Record *record = [Record find:@{ @"name" : @"Apple", @"type" : @"Fruit" }];

These methods will hopefully help build dynamic findBy methods with multiple paramaters.

There's also a findOrCreate, which returns an object with the given properties if one exists, and creates one if it does not

    Record *newRecord = [Record findOrCreate:[NSDictionary dictionaryWithObjectsAndKeys:@"Mango", @"name", @"Fruit", @"type", nil]];

New syntax:

    Record *newRecord = [Record findOrCreate:@{ @"name" : @"Mango", @"type" : @"Fruit" }];

I've also added dynamic hasProperty methods:

    Record *newRecord = [Record create:[NSDictionary dictionaryWithObjectsAndKeys:@"Squash", @"name", nil]];
    NSLog(@"%@", [newRecord hasName] ? @"YES" : @"NO");  //Prints YES
    NSLog(@"%@", [newRecord hasType] ? @"YES" : @"NO");  //Prints NO


***But Why?***
ActiveRecord is awesome, and NSManagedObject+ActiveRecord and MagicalRecord don't quite capture the magic. And it was something of a programming exercise for me to get comfortable with the objc runtime.

***How it Works***
It's actually pretty cool: any time a selector is sent to a class that the class doesn't recognize, `resolveInstanceMethod:` or `resolveClassMethod:` gets called. 

In a subclass, you could override that method to have it do what you want, in this case, respond to a `findBy(Property)` method. But the magic of RestKit's (and MagicalRecord's, etc) CoreData classes is that you get to work with a vanilla NSManagedObject anywhere you want to. 

You can't just "override" a method in a category, though. To get around this, I swizzle the methods so that my implementation of resolveClassMethod gets called instead. And I'm using JRSwizzle to do this, so everything is  fine with inheritance and whatnot. If the method exists already (or doesn't start with findBy or findAllBy), I swizzle 'em back and pass the selector back to the normal resolveClassMethod:.

***What's left to do***

* Find a way to quiet the "might not respond to selector" warnings. (This seems to be impossible at the moment.)
* Allow uppercase properties. Right now it assumes a camel-cased property with a lowercase first letter.
* Allow multiple parameters, i. e. `[MyManagedObject findByCategory: @"Fruit" color:@"Red"];`
* Test it. I've tested on the simulator in an actual app, but I can't run the RK test suite right now due to a nokogiri issue (this is slowing me down on the syncing work, too). I'm upgrading to lion within the next two days and I suspect this will fix that problem.