C backend: Overhaul string literal emitting, now similar to LLVM backend

This changes ir-hlc.bas to emit string literals based on the result of
hUnescape[W]() like ir-llvm.bas instead of emitting directly from the
internal format.

For now this is probably a bit slower, but much easier to understand.
This also fixes a bug where backslashes weren't escaped when emitting
wstring literals. (that probably was a fault in hEscapeToHexW() which is
completely removed by this patch)

In the future the internal escape format should perhaps be removed
completely, letting the lexer handle everything as soon as possible; only
null chars (e.g. from \0 sequences) actually need to be encoded specially
for internal use.

Also, this patch changes ir-hlc.bas to emit global wstring initializers
in form of individual chars ({ L'a', L'b' } instead of L"ab") to work
around the issue of GCC using signed int for wchar_t, while FB uses
UINTEGER, since GCC would show an error for code like:
	unsigned int w[] = L"...";
It just seems safer to immediately use the data type that we expect to be
used, not something else. Signedness can matter, as was seen in 0cd672f.