Fix multiple projects for optimizations, debug/trace, etc.

System.Linq.Parallel.csproj wasn't outputting symbols, and it didn't have optimizations enabled in Release.

System.Numerics.Vectors.csproj was setting TRACE in Release builds but not in Debug builds.

System.Text.RegularExpressions.csproj wasn't setting either DEBUG nor RELEASE constants in either Debug/Release builds, it didn't have optimizations enabled in Release, and it wasn't generating symbols in either.

The XML libraries were't setting DEBUG/TRACE in either Debug/Release builds, weren't enabling optimizations in Release builds, and weren't generating symbols in either.

DEBUG is important in almost all of these libraries, as they use Debug.* for asserts and the like.  Symbol generation is important for debugging.  Optimizations are obviously important (but just to verify I saw significant performance wins in multiple libraries just from turning this on in release).  TRACE isn't really important, as none of the libraries do release tracing, but I thought it good hygiene to enable it.
Implement Microsoft.Win32.Primitives support on Linux

Separates out the Windows interop code from the main Win32Exception type, and then adds a basic Linux implementation, based on strerror_r. (There are a few other minor, unrelated changes, e.g. some additional enum values in an interop file, in order to keep these files in sync with additional .NET Core projects not yet shared.)
Merge pull request #241 from stephentoub/fix_project_settings

Fix multiple projects for optimizations, debug/trace, etc.
Merge pull request #242 from stephentoub/win32_primitives_unix

Implement Microsoft.Win32.Primitives support on Linux