SystemTools: Use extended length paths on windows to workaround MAX_PATH

Many Windows filesystem calls (but not all) have a MAX_PATH limitation
of 260 characters (drive letter, colon, backslash, 256 char path, null).
This is especially problematic for interacting with large highly nested
build trees (the boost C++ libraries, for example).  This limitation can
be overcome by using extended length paths instead.  By converting local
filesystem and network paths to extended length paths before passing them
to the underlying APIs the maximum path length can be as large as 32767
characters. The new ConvertToWindowsExtendedPath function will convert
"E:/a.txt" to "\\?\E:\a.txt" and "\\Foo\a.txt" to "\\?\UNC\Foo\a.txt".

This also adds a KWSYS_TEST_SYSTEMTOOLS_LONG_PATHS cmake option to enable
the extended length path tests.  This is off by default since if something
does go awry, the resulting leftovers could be difficult to delete manually.

Change-Id: Ib7ac1f657241ed389169678d1c078c0d836f1c7b