Support loading external C# MSVS projects.

In addition to supporting native executable projects in the 'external'
targets, allow referencing C#/.NET ones as well.  Note that such
solutions will require Professional versions of Visual Studio to load.
Fix parsing of some external VS projects.

Projects created under a locale that uses , for decimal point character
(e.g.  French) use it in the Version property.
FIx purging of empty modules.

Don't fail if a module doesn't contain any targets and doesn't have
given toolset specified at the same time.
MSVS: Don't pass preprocessor defines to MIDL compiler.

Preprocessor symbols are rarely needed by the IDL compiler.  Rather than
passing everything used by the C/C++ compiler to it, don't support this
at all.  We should instead add idl-defines (and rc-defines) if it ever
becomes needed.

The underlying reason for this removal is that the MIDL compiler doesn't
accept quoted preprocessor defines in pre-2010 VS versions, instead
failing with cryptic errors.  Probably the best way to fix this is to
pass quoted symbols as AdditionalOptions instead of preprocessor
symbols, but that's more complicated than simply removing these.

See http://public.kitware.com/Bug/bug_relationship_graph.php?bug_id=8165&graph=relation
for detailed discussion.
Fix vs200x to include per-file flags even in case of object file name conflict.
MSVS: Fix incorrect formatting of libraries lists.

For libraries included conditionally, or with config-dependent names
(e.g.  "d" suffix for debug versions), a bogus "None.lib" library could
be included in the output, because the list wasn't properly checked for
empty entries.
Fix typo in GnuToolset's file extensions declaration.
MSVS: Add {shared_library,loadable_module}_extension.

These are used by native target's code to determine file extension if
not overriden.  Because of this omission, DLLs with custom basename (but
not extension) had empty extension in vs201x toolsets.