Added linq_distinctByKey method

Added linq_distinctByKey: method.

This useful for accessing distinct items via a key rather than directly.

I also added some block macros and convenience typedefs. Some of these are based on a previous commit I made to LinqToObjectiveC here https://github.com/ColinEberhardt/LinqToObjectiveC/commit/f73ed9463dbe45724755ff48e5ba42c6aa4b3f45 and I find them very useful.

Both LINQ4Obj-C and LinqToObjectiveC now use the same linq_ namespace prefix so it is not possible to use both in the same project reliably.