misc ungetc fixes
Added support for loading .ogg audio files using a combination of
`SDL_RWFromConstMem()` + `Mix_LoadMUS/WAV_RW()`.

`SDL_RWFromConstMem()` now returns an opaque reference that corresponds
to a Javascript-side object which retains the information passed in.
The same for `SDL_RWFromFile()` but it saves different information.

When `Mix_LoadMUS/WAV_RW()` is called, it now expects a reference to
one of those Javascript-side objects and from it, either uses a
pre-loaded Audio, or reads bytes from the file-system to make one,
or uses the bytes originally passed into `SDL_RWFromConstMem()` to
create one.

Note that with this change you can now simply embed sound files in your
app, you do not need to preload them.
Updated with kripken's suggestions.
Made sure that `IMG_Load_RW` is also aware that it should receive
`SDL_RWops *` generated from `SDL_RWFromFile()`.
Implement SDL_Surface refcounting
Fix SDL_surface refcount test and initialise refcount to 1
Improve error message to better describe a user error with positional arguments.
Fix scons tools to use os.path.join so that windows paths don't have an exectutable name 'dir1\dir2\dir3/clang', which fails.
Blow away the jscache when embind changes and fix a cpppath dependency error when compiling embind files.
The emscripten metabuilder only builds three individually-named targets.  It's up to the caller to decide which variant to load.
the compress js optimizer pass is gone, replaced with minifyWhitespace
avoid importing shared from emscripten.py if possible
fix glGetAttachedShaders
Formatting cleanup.
 - added lchmod
 - fixed up errno values for mknod
 - split up stat tests into test_stat, test_stat_chmod, test_stat_mknod
Added mime type information to SDL_rwops in `SDL_RWFromFile` as a hint
to processing down the line.

Changed the `Pointer_stringify()` call to occur in `SDL_RWFromFile`
instead of downstream which makes more sense.

Cleaned up formatting.
Made getMimetype() a public method of the Browser module and used it
inside the SDL module.
change error message to assert
add testcase for glGetAttachedShaders
fix structure size when it has a [0 x ..] at the end - that should add nothing
fix test_files* after the changes to stderr