Work around logger instantiation issue w/Mono.

Mono, for reasons that still need to be investigated, doesn't seem to be
able to instantiate logger (which ultimately leads to a crash).

Work around the issue by dropping logger use in the affected code.
[Mono] Take care of ObjectDisposedException being thrown w/V7 client connection timeout.

In Mono, TcpClient.Close() causes asynchronous access (coming from
BeginConnect-related path) to AsyncWaitHandle.

This opens a race window with 'finally' block below that closes said handle.

Unfortunate chain of events results in the following:

Unhandled Exception: System.ObjectDisposedException: The object was used after being disposed.
  at System.Threading.WaitHandle.CheckDisposed ()
  at System.Threading.EventWaitHandle.Set ()
  at (wrapper remoting-invoke-with-check) System.Threading.EventWaitHandle:Set ()
  at System.Net.Sockets.Socket+SocketAsyncResult.set_IsCompleted (Boolean value)
  at System.Net.Sockets.Socket+SocketAsyncResult.Complete ()
  at System.Net.Sockets.Socket+SocketAsyncResult.Complete (System.Exception e)
  at System.Net.Sockets.Socket+Worker.Connect ()
  at System.Net.Sockets.Socket+Worker.DispatcherCB (System.Net.Sockets.SocketAsyncResult sar)

As (in Mono) TcpClient.Close() signals AsyncWaitHandle, we can just wait on
it before proceeding.
[Mono/Linux] Make sure temp files of different users can't clash

On Mono/Linux, GetTempPath() returns /tmp. This creates a problem for
multiple users of HFM (concurrent or not) as temp HTML/XML file may clash.

Mitigate the issue by having HFM use /tmp/hfm-<user> location for temporary
HTML/XML files.

In the long run we should probably incorporate .NET's equivalent of
mkstemp() or mkdtemp().