#25435 Better resolve of hooks with {engine_name}

If a hook is a new-style hook and has a default value which contains the
{engine_name} token, the code now checks to ensure that an
implementation actually exists for the current engine.

For example, previously, there could be implementations for maya and
nuke and when you installed the app for houdini things would just
install without errors, but when you tried to run the app it would not
find the desired built-in houdini hook because there was none.

Now instead, it will warn at install time and ask you to enter a manual
parameter value in this case.

/----------------------------------------------------------------------
| Item:    actions_hook
| Type:    hook
| Summary: Hook which contains all methods for action management.
\----------------------------------------------------------------------
WARNING: Sorry, no built-in support for the tk-shotgun engine yet! The
default hook value '{self}/{engine_name}_actions.py' for this hook
refers to an engine specific hook, however there is currently no hook
implementation available for the current engine. If you want to continue
with the install, you have to supply your own hooks.
Please enter value (enter to skip): 

Closes #81
#25686 Adjusted the logging in the tank command to not break long words.
For #25692 - Improved template parsing to be more robust.
Template parsing now handles more ambiguous cases where one or more static tokens may also appear in a key value.  If a value is ambiguous this will now get reported correctly in the error.
Closes #84
For #25587 - Spaces in Windows PC & Python paths are now supported.
Spaces are now supported in paths for Pipeline Configurations on Windows when using the latest version of the tank.bat file.  Additionally, Python can now be installed into a path with spaces in (e.g. C:\Program Files) if needed.
Closes #83.
For #25692 - Improved template parsing to be more robust.
Template parsing now handles more ambiguous cases where one or more static tokens may also appear in a key value.  If a value is ambiguous this will now get reported correctly in the error.
Closes #84
Merge branch 'master' of ssh://github.com/shotgunsoftware/tk-core
#25236 Added support for shared framework instances.

This feature is enabled by setting `shared: true` in the framework's
info.yml. By default, each app will create instances of all the
frameworks it needs. The paradigm is that of a static library, where
each app will run independent *instances* of all its frameworks for
encapsulation. If one app does crazy manipulation of its frameworks,
this will not affect any other apps since they all run their own
instances.

However, for memory intensive or slow to set up frameworks, it may be
beneficial to have a single shared framework instead. This flag
indicates to the system that a framework is of that kind.

This commit closes #66 from Psyop. Thanks @agibli!
Merge branch 'master' into 25664_data_roots_error_trap