#26331 Better threading protection around shotgun API

This implements the tk.shotgun property accessor such that it is stored
in a threadlocal storage. This means that each thread will get a
separate instance of the Shotgun API when calling tk.shotgun, even if
the tk instance is shared across threads.

This provides a layer of protection around the Shotgun API which isn't
threadsafe. The result is that while you couldn't previously have
multiple threads picking up tk.shotgun and running concurrent queries,
this is now possible. Note that this also affects some API methods (for
example the publish method) which also uses the tk.accessor. The overall
result is improved thread safety for any Shotgun call made via toolkit.

Closes #99
[minor] Fixed issue found in release QA.
#26318 Added a global engine busy popup window

Adds *internal* functionality to pop a busy UI to indicate that long
running activity is happening. The intent is to use this for the path
cache sync scenarios which may take longer than usual, for example a
full sync. The progress only pops up on engines which have UI (QT)
capabilities - other engines will log an info message instead.

Closes #100 

(Happy 100 Core Pull requests!:balloon:)
Merge branch 'master' into path_cache_spike

Conflicts:
	python/tank/api.py