scripting: implement ScriptManager

ScriptManager allows storing scripts as strings under filesystem-like
paths, and retrieving them by path. In scripts loaded from the manager,
paths to other scripts are also resolved within the manager. Thus,
the manager provides an in-memory virtual filesystem, making it easier
to deploy scripts as internal parts of executables.
apps: add "marsyas-script-cpp" tool

The tool reads script files and generates C++ code that embeds
the scripts as C strings and registers them with the ScriptManager.

This tool helps applications to embed scripts within executables.
get rid of "defaultfile" placeholder and related cruft
scripting: fix operator precedence
scripting: implement "on" and "when" ops, cache unchanged expr
add control clocking example script
scripting: "when" op: clock only on false-to-true change
marsystems: Spectrum: warn input samples not power of two
system, scripting: enhance name lookup and inline prototypes

MarSystems can act as scope for lookup of a set of names of
any arbitrary MarSystems regardless of hierarchy.

In scripts, name lookup and path resolution is done exclusively using
the new scope system. Each explicitly named actor functions as a scope,
and captures all (and only) hierarchically closest named descendants.
This means that in order to address a deeply nested actor, it is not
necessary anymore to name all actors on the hierarchical way to it.

This commit also improves inline prototype instantiation to
properly duplicate links to internal control expressions.
scripting: remove parenthesis around "public" keyword

Keyword emphasis should rather be handled by syntax highlighting
(when Marsyas script conquers the world and any self-respecting
editor has highlighting for it).
demo scripts: update for change of "public" keyword
scripting: enable direct instantiation of other script

This enables syntax for actor declaration like the following:
-> actor_name: "script_file.mrs" {...}

The syntax was already supported in the implementation,
but not enabled in the parser.
system: scripting: fix control name lookup

Fix resolution of control paths that contain only a control name.
system: avoid use of nullptr (requires C++11)