msys-core: add basic Unicode support

Use UTF-8 encoding for:
 * file names
 * environment
 * command line arguments
 * console output

In particular, this fixes the "HOME directory doesn't exist" bug if HOME
contains non-ASCII characters (issue 108 in the old Goole issue tracker,
caused by GetEnvironmentStringsA returning OEM-encoded strings which MSYS
reinterpreted as beeing ANSI-encoded).

Patch 0014 fixes a long standing bug in Find*File that affects recursive
directory copying in MSYS' symlink() emulation (and would have affected
sub-directory counting if this hadn't been dropped in patch 0011 :-).

Signed-off-by: Karsten Blees <blees@dcon.de>
msys-core: Unicode console input

Change console input to UTF-8 encoding and enable ALT+NUMPAD to enter
special characters.

Signed-off-by: Karsten Blees <blees@dcon.de>
msys-core: backport multibyte support from newlib 1.20

Add multibyte functions (e.g. wctomb, mbtowc) to msys.dll so that other
msys programs (e.g. bash) can be compiled with multibyte support.

Picked from msysgit's msys branch, with these changes to compile on 1.0.18:
 * newlib/libc/include/sys/_types.h: always "typedef long _ssize_t"
 * winsup/cygwin/include/wchar.h: copied from newlib/libc/include/wchar.h

Signed-off-by: Karsten Blees <blees@dcon.de>
msys-bash: add build recipe for bash with Unicode support

Build bash with multibyte support so that we can type non-ASCII characters
in the console (if 8-bit input is enabled in inputrc).

Note: the unicode-enabled msys-core-%-dev package must be installed first,
otherwise 'configure' will silently disable multibyte support due to
missing conversion functions.

Signed-off-by: Karsten Blees <blees@dcon.de>
msys-core: use canonical posix path for ambiguous mount entries

When looking up a posix path for a windows path, and the windows path is
mounted to multiple posix paths, return the canonical (i.e. shortest)
posix path instead of the longest.

E.g. when starting a shell in the root directory (i.e. the parent dir of
msys.dll), the posix path should be '/', not '/usr' or '/usr/local'.

This broke in 1.0.16 ("Be more robust when dealing with ambiguous paths
and mount points").

Signed-off-by: Karsten Blees <blees@dcon.de>
Merge pull request #13 from kblees/kb/unicode

Unicode support