much better documentation
designated initializer
+futureWithBlock: checks for nil now and logs and error and will return nil
move dispatch_once_t to -resolveFuture
unit test +futureWithBlock with a nil block argument