Move final text check to main thread when using data detectors. Fixes #162

The bug is caused by the main thread altering the text of the label after the data detection. Previously, we would check that the text used as input to the data detector was the same as the label text immediately after detection. This works as long as the main thread doesn't change the text between this check and the execution of the block within the dispatch_sync. It seems like this shouldn't be a big deal, but in practice can cause crashing. The resulting code is slightly uglier, but it splits the existing if in two, such that we still only dispatch to the main thread if there are results. Once on the main thread, we compare the text used to generate the results with the current text of the label before apply the detected links.

Since the check has been moved onto the main thread, I see no reason why that dispatch should be sync, so I have changed that to an async. There might be some good reasons to leave that as sync, I just couldn't think of any.
Merge pull request #166 from pashields/link_detector_threading_fix

Move final text check to main thread when using data detectors. Fixes #162