Allow user to supply functions for JS <-> Lua string conversion

As described in https://github.com/campadrenalin/weblua/issues/17, weblua
has problems with non-ASCII characters.

This commit adds two functions to the API.

set_js_string_to_lua: expects a function that converts a JS string to a
null-terminated byte sequence represented as a Uint8Array.

set_lua_string_to_js: expects a function that takes a Uint8Array
representing a Lua string (without null terminator) and returns a JS
string.

It also fixes the parse method so it works if the length of the Lua
representation of a string does not equal the number of characters.

Since emscripten's intArrayFromString already handles UTF-8, handling
unicode input works without calling set_js_string_to_lua. Because print()
only writes bytes to stdout, Lua.exec('print("some non-ascii string")')
works out of the box.

To get full UTF-8 support, you must supply a function to decode UTF-8:
Lua.set_lua_string_to_js(function(arr) {
    return (new StringView(arr)).toString();
});

This uses the StringView library, which can be found here:
https://developer.mozilla.org/en-US/Add-ons/Code_snippets/StringView

It should also be possible to use Lua.set_js_string_to_lua and
Lua.set_lua_string_to_js to support other character encodings.