Large refactor - fixes dramatic "don't use NSArray as a dictionary key" bug.

Keys are now CKVOTokens - these contain the block. The helper's
dictionary now uses the token's index (an increasing integer) as the key
and the token as the object.

The KVOToken's index is used as a context.

This fixes a whole host of bugs - but mainly using an NSArray as a key
to a collection is a BAD idea - due the way hash works on collections.

Added more tests to help test all possibilities.
WIP
Merge branch 'master' into feature/ErrorHandler

* master:
  Large refactor - fixes dramatic "don't use NSArray as a dictionary key" bug.

Conflicts:
	NSObject_KVOBlock.m
Merge branch 'test2' into feature/ErrorHandler

* test2:
  WIP

Conflicts:
	NSObject_KVOBlock.m