Add Javascript scripting support using MuJS

Implements JS with almost identical API to the Lua support, except:
- The global mp, mp.msg and mp.utils are always available
- On error return undefined and the error is at mp.last_error_string
- Timers are JS "standard" global set/clear Timeout/Interval/Immediate
- Supports CommonJS style modules/require
- At mp.utils: read_file (any), and load_file, run_file (for js files)
- Global print and dump functions
- mp.options currently not supported

Requires MuJS (clone, make, make install):
- http://mujs.com/ - git://git.ghostscript.com/mujs.git
- Mirror - https://github.com/ccxvii/mujs

Note: MuJS is a new project and this is probably its first major use outside
of MuPDF. Please keep an eye open for bugs.
js: add Duktape support and build instructions

The support is implemented using a thin translation layer from MuJS -> Duktape
(AKA MUD) which, at compile time, translates most of MuJS APIs into Duktape's,
and adds small wrapper functions where no identical API is available.

The existing code is minimally touched and the MUD translation is applied
via mud_js.h (and controlled with MUD_HAVE_DUK).

mpv needs duktape.c and duktape.h at <mpv-src>/duktape in order to use it.

Duktape - http://duktape.org/
Sources (as archives) - http://duktape.org/download.html or after checking out
the latest tag from https://github.com/svaarala/duktape-releases.git .

Like MuJS, Duktape is also a new project, so keep an eye for bugs here too.
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