Properly convert COM error codes to C# exceptions

Also use additional information provided by IErrorInfo to fill in
exception details.

To make use of IErrorInfo on Linux a suitable implementation has to be
provided, e.g. by including libcom plus adding a mapping from
oleauth32.dll to the shared library that provides the implementation.

This completes mono bug 496138
(https://bugzilla.novell.com/show_bug.cgi?id=496138)
Set ErrorInfo in Marshal.GetHRForException

Marshal.GetHRForException had a MonoTODO because it needs to set
the errorinfo object so that exceptions get properly passed to
unmanaged code. Since not all managed exceptions have a corresponding
HR value but we might need to get to the original thrown exception
we implement a ManagedErrorInfo helper class that implements the
IErrorInfo interface but also stores the exception.

In GetExceptionForHR we check if the errorinfo we get is a
ManagedErrorInfo. If it is we return the exception stored in there
(if it converts to the same error code), otherwise we construct a new
exception.
[MWF] Partially implement Help.ShowHelp
Fix DataRow error management

DataRow's RowError is supposed to be String.Empty to indicate
no errors, but is sometimes wrongly set to null, falsely indicating
errors. Fixed to be String.Empty.
Added test for DataRow error
Test uses SQLite in-memory DB for test

Also spaces to tabs
[monodoc] Changes to support new-style iOS documentation:

- Fixed bug in creating CREF strings.
- Refactored XML file processing for customization during new style iOS assembly. This was done through the new file source interface, which lets you use dependency injection to customize the process.
- Added the ability to rewrite CREF references when assembling docs that use native types. Also, the ability to handle dropped namespaces.
[mdoc] Changes to support new-style iOS API:

- the dropns flag now lets you define a namespace that is dropped in a new version of the assembly during update.
- the ntypes flag lets you tell the update command that certain methods are now using native types, and as such will attempt to match with old types in order to preserve documentation.
- the preserve flag will avoid removing members. This is to avoid dropping documentation for members that changed from one version of the framework to another new-style version (ie. iOS).
Correct code review comments on test
[Cleanup] Removed .jvm.cs files that are no longer used

They were once part of a special Java target profile, but this is no longer used today.
[Cleanup] Removed net_1_1_java*.sources files

They were once part of a special Java target profile, but this is no longer used today.
[Cleanup] Removed net_1_1_java from Makefiles

It was once part of a special Java target profile, but this is no longer used today.
[Cleanup] Removed JavaEE csproj and sln files

They were once part of a special Java target profile, but this is no longer used today.
[Cleanup] Removed files that imported Java namespaces

They were once part of a special Java target profile, but this is no longer used today.
[Cleanup] Removed TARGET_JVM

It was once part of a special Java target profile, but this is no longer used today.
KeyPairPresistence now tries to fix folder permissions.
An exception is no longer thrown if the folder permissions can be fixed.
Fixes bug 19274.
[mdoc] Added preserver.cs to build script so make compiles
[mdoc] Fixed an issue with type-file path resolution.
In certain cases, such as stubbing out namespace-less classes it was failing to produce the right paths.
[mdoc] Fixed issue with assembly versions being added incorrectly
[mdoc] Moved enumeration back into deferred mode.
This resolved an issue with the ecmadoc importer that assumed execution would be deffered in order to keep reading from the XmlReader