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.
Don't crash when value is nil.  Fixes [NSDataDetector enumerateMatchesInString:options:range:usingBlock:]: nil argument' crash.
Merge pull request #167 from cfis/nil_values

Don't crash when value is nil
Merge pull request #166 from pashields/link_detector_threading_fix

Move final text check to main thread when using data detectors. Fixes #162
Bumping version to 1.5.1
Add corresponding `highlighted` properties for shadowColor, shadowOffset, and shadowRadius
Correcting documentation about text properties
Refactoring implementation of -linkAtCharacterIndex:
[Issue #164] Setting default line break mode for link attributes to word wrap
[Issue #163] Completing implementation of NSCoding
[Issue #149] Adjusting pen offset on last line to fix position of truncation token

Signed-off-by: Mattt Thompson <m@mattt.me>
Bumping version to 1.6.0