keep NSBundle calls on a single thread

…in `QSResourceManager`

I think @pjrobertson was right in #1861 when he said these calls should be on a single thread. But the actual code in #1871 didn’t keep it on one thread. It just locked `QSRez` so multiple threads couldn’t make changes simultaneously. We should probably avoid locking frequently used singletons like `QSRez` unless absolutely necessary.

I’ve attempted to change this so it queues things up on a single thread instead of locking the object. It seems to prevent the freezes people are reporting.

There aren’t as many changes as it looks like. It’s mostly indentation changes for things that aren’t wrapped in `@synchronized` any more.

fixes #1957
Any calls **to the same object** though, right? As it says in the link…

> Many objects deemed “thread-unsafe” are only unsafe to use from multiple threads. Many of these objects can be used from any thread as long as it is only one thread at a time. Objects that are specifically restricted to the main thread of an application are called out as such.

So a local variable that gets destroyed as soon as the method finishes should be safe on any thread.