Use $(MSVCNT:J=" ") and $(MSVC:J=" ") when constructing paths, since
spaces in the inherited environment variable are part of a scalar
value (a file name), not separators within an array.
This is probably still going to blow chunks if MSVCNT contains a
path where there are two or more adjacent spaces somewhere (since
the join will result in a nonexistent filename), but that's an
unlikely case whereas single spaces in NT filenames are pervasive.
To really do this right, Jam needs a way to treat variables
inherited from the environment as a single value without any array
tokenization. At least sometimes.
For the MSVC/MSVCNT special case actions Cc, C++, and Link: put quotes
around the expansion of $(STDHDRS) and $(LINKLIBS) so the batch
interpreter won't split space-embedded pathnames into multiple
arguments. Note that it's the operating system's command interpreter,
not Jam, which needs the quoting against whitespace this time.
Multiple values within these variables are still expanded correctly
at the Jam level.