Refine `DispatchQueue.main` to return a `OS_dispatch_queue_main`

Ok thanks.
I thought it would be a harmless change because type(of: DispatchQueue.main) returns a OS_dispatch_queue_main type, but I had not thought about this case.
I'm going to add a static method and call it like this DispatchQueue.mainAsyncIfNeeded { ... } which reads almost as my original example.