js: support both Duktape and MuJS at the same binary

If both backends are compiled into mpv then mpv will choose Duktape by default.
However, if the user specifies --script-opts=js-backend=mujs, then MuJS will
be selected (the <ext>-backend script-opts key is automatically interpreted
when the script backend defines its extension as e.g. "js:duktape").

The js-backend can even change in runtime and it would affect the next script
load - if mpv supported adding scripts at runtime (which it doesn't AFAIK).

The implementation relies on the fact that javascript.c can already configure
itself to compile in MuJS "mode" or Duktape mode, according to MUD_USE_DUK.

All that's left to do is compile it twice - with different MUD_USE_DUK values
and be happy for the fact that Duktape has a duk_ prefix for its API while
MuJS doesn't. This is done at the 4 lines mujs_shim.c which, if the conditions
match, define MUD_USE_DUK and includes javascript.c . Presto.

This also has the great added value that when working on javascript.c, it will
show compile issues with both backends, and binaries can be tested with both
backends without invoking configure and rebuilding (and especially users
could switch backends with a single binary).
js: multi-backend: use --js-backend instead of --script-opts=js-backend