Add typed aggregate functions to Results<>

See the tests for examples of use. The same syntax could be applied to other things like sorting and querying.

@alazier 
Neat! But just to check if I understood the workings of this:

1. Supply a closure that extracts a property from an RLMObject
2. Create a "recorder" object
3. Fool the closure into believing that the recorder is actually an RLMObject
4. Apply the closure to the recorder, which makes the recorder capture the property name
5. Use the name in getting the average/min/max in the old way
6. Use the type information from the block to make the generic function have that return type

But why call the closure "block"? It would never be called from objective c, would it?