call runtime.LockOSThread

This is to ensure that the goroutine doesn't switch OS threads before it calls CFRunLoopRun. I've seen issues with this before when using CFRunLoopStop/CFRunLoopRun multiple times. Since the current code only calls Run once, It's possible it will never run into issues but this seems like an easy defensive change.

closes #7