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 #242 from stephentoub/win32_primitives_unix

Implement Microsoft.Win32.Primitives support on Linux
Fix bug in Matrix4x4.Decompose.

While working on the Win2D numerics implementation, I discovered this longstanding issue
which was inherited from XNA. In some corner cases where one axis of a matrix transform
has degenerate (zero) scale factor, the Decompose method tries to compensate by filling
in an artificially generated orthogonal coordinate system, but was doing this wrong and
generating nonsense results.

Also updated unit tests to properly validate decompose of matrices with zero and negative
scale factors.
Merge pull request #250 from shawnhar/matrixdecompose

Fix bug in Matrix4x4.Decompose.
Formatting changes to private fields.
Merge pull request #256 from Priya91/lasekar/netformat

Formatting changes to private fields.
Merge remote-tracking branch 'upstream/master'