The X_init/X_open process on OSX now supports Unicode

The UTF-8 argv/envp strings are now converted to StringRefs and processed in that form.

Windows and Linux have not been updated, however.
Add StringRef X_init support for Win32

Requires testing!
Add StringRef X_init support for Linux

Requires testing!
Update calls to setlocale()

Calls to the C library's setlocale function have been changed to more appropriate values. Previously, they were setting the LC_CTYPE and LC_COLLATE to the default system locales (as specified, e.g, through the $LANG or $LC_ALL environment variables) when what they really wanted to do was set them to the US English settings with the native encoding (Codepage 1252 for Windows, ISO-8859-1 for Linux and MacRoman for OSX). The other locale settings are set to the system default (this includes C library error messages, numerical formatting and time/dat formatting).
Win32 elevated slaves now pass argv/envp as UTF-16

Passing the string arrays in this format allows Unicode strings to be passed along to the elevated process.
Add MCStringCreateWithSysString and MCStringConvertToSysString

These functions are used on Linux to convert between ISO-8859-1 or UTF-16 encoded StringRefs used by LiveCode and whatever string encoding the Linux system expects (probably UTF-8 or ISO-8859-1 but it could be anything). Windows doesn't need this as its *W() functions always take UTF-16 and on OSX the BSD components should always use UTF-8.

Currently, these functions are only used for ARGV/ENVP strings but ideally should be used whenever a string is passed to a system interface (file APIs, for example).

String handling when spawning elevated processes is not yet correct - it currently assumes that the system encoding is UTF-8 when passing argument strings. This affects both the exec of gksu and the creation of the final elevated process.
Process launching on OSX now encodes arguments in UTF-8
Replace an assert with MCAssert
Merge branch 'refactor-syntax_unicode' into refactor-syntax_unicode_xinit

Conflicts:
	engine/src/dskw32.cpp
	engine/src/lnxelevate.cpp
	engine/src/lnxspec.cpp
	engine/src/w32spec.cpp
Merge branch 'refactor-syntax_unicode_xinit2' into refactor-syntax_unicode_xinit3

Conflicts:
	engine/src/dskw32.cpp
	engine/src/lnxelevate.cpp
	engine/src/lnxspec.cpp
	engine/src/w32spec.cpp
Merge branch 'refactor-syntax_unicode_xinit3' into refactor-syntax_unicode_xinit
Merge branch 'refactor-syntax_unicode' into refactor-syntax_unicode_xinit
Merge branch 'refactor-syntax_unicode_xinit' of https://github.com/runrevfraser/livecode into refactor-syntax_unicode_xinit
Merge branch 'refactor-syntax_unicode' into refactor-syntax_unicode_xinit
Merge branch 'refactor-syntax_unicode_xinit' of https://github.com/runrevfraser/livecode into refactor-syntax_unicode_xinit
Merge branch 'refactor-syntax_unicode' into refactor-syntax_unicode_xinit
Merge branch 'refactor-syntax_unicode_xinit' of https://github.com/runrevfraser/livecode into refactor-syntax_unicode_xinit

Conflicts:
	engine/src/dsklnxmain.cpp
Add byte order mark (BOM) support when creating StringRefs with UTF-16

The UTF-16 -> native conversion code should not attempt to convert the BOM to a native char.
ifg
Merge branch 'refactor-syntax_unicode_xinit' of https://github.com/runrevfraser/livecode into refactor-syntax_unicode_xinit