SASyncOperation improvements

- Important addition to finish run loop from main queue
- Do not run CFRunLoopRunInMode if operation is done (for simple blocks
  possible without any asynchronicity)