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