Sort.
Rewrite to avoid a retain cycle.

The call to NSInvocationOperation.initWithTarget makes an
NSInvocation instance that retains its arguments, and assigns it to
self.invocation.  There is no way to release these arguments again,
since self.invocation is readonly and setting self.invocation.target = nil
doesn't release target (even though it clearly should do).  In our
case, the target was self, which caused a retain cycle.

Get around this by having a separate helper class.  This breaks the cycle
because now the helper class is the target of the invocation.

Discard the block once it's been invoked, which should
reduce the chance of further retain cycles if our caller isn't very careful.
Added some unit tests for NSDate+ISO8601.
Add a benchmark test for [NSDate dateFromIso8601].

This is derived from a test in CBLJSON.m in
http://github.com/couchbase/couchbase-lite-ios,
Copyright (c) 2012-2013 Couchbase, Inc and licensed
under the Apache License 2.0.
Performance improvements for NSDate+ISO8601 parsing.

Add CBLParseDate from CouchbaseLite,
https://github.com/couchbase/couchbase-lite-ios, d05943f1b03.
This is Copyright (c) 2012-2013 Couchbase, Inc, and licensed using the
Apache Liense 2.0.  That code in turn includes code from SQLite, which is
in the public domain, and credits Astronomical Algorithms by Jean Meeus.
The CBL code also credits @nirvana and @AnuragMishra for earlier work.

Use CBLParseISO8601Date to replace our use of NSDateFormatter in
[NSDate dateFromIso8601].  This implementation is 21.7x faster than
using a single NSDateFormatter in a loop, and 756x faster than our previous
implementation (because we were creating the NSDateFormatter each time for
thread-safety reasons).  Yes, that's 756 *times* faster.

Also, add [NSDate timeIntervalSinceReferenceDateFromIso8601].  This is
even faster than [NSDate dateFromIso8601], because it doesn't need to allocate
an NSDate.