whitespace
No Content test
adding logging

I thought this was fixed but it was not, at least not on Windows.

It seems like processor is being called twice in Web.fs:request_loop:loop.

```
2013-12-23T17:33:47.1003872Z: starting listener: started 2013-12-23T17:33:47.0933497Z <-> x : 127.0.0.1:8083
2013-12-23T17:33:47.1073184Z: wait for listening
2013-12-23T17:33:47.1202920Z: started listener: started 2013-12-23T17:33:47.0933497Z <-> 2013-12-23T17:33:47.1182996Z : 127.0.0.1:8083
2013-12-23T17:33:47.1212884Z: DONE: wait for listening
2013-12-23T17:33:47.2609861Z: client accepted
2013-12-23T17:33:47.2720092Z: web:request_loop:loop -> processor
2013-12-23T17:33:47.2909679Z: web:request_loop:loop <- processor
2013-12-23T17:33:47.2919652Z: web:request_loop:loop -> unblock
2013-12-23T17:33:47.3238526Z: web:request_loop:loop <- unblock
2013-12-23T17:33:47.3238526Z: web:request_loop:loop -> flush
2013-12-23T17:33:47.3268729Z: web:request_loop:loop <- flush
2013-12-23T17:33:47.3298880Z: web:request_loop:loop -> processor
```

This is as far as I've got. At this point the tests hang at:

```
    let request = RestRequest(resource, methd)
    let res = client.Execute request |> extractor // << here
    Log.log "finished requesting %O" request
```

with this stack-trace inside the test:

```
  [Managed to Native Transition]
  System.dll!System.Net.Sockets.Socket.Receive(byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode) + 0xbd bytes
  System.dll!System.Net.Sockets.Socket.Receive(byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags) + 0x1d bytes
  System.dll!System.Net.Sockets.NetworkStream.Read(byte[] buffer, int offset, int size) + 0x83 bytes
  System.dll!System.Net.PooledStream.Read(byte[] buffer, int offset, int size) + 0x14 bytes
  System.dll!System.Net.ConnectStream.InternalRead(byte[] buffer, int offset, int size) + 0x41 bytes
  System.dll!System.Net.ConnectStream.ReadWithoutValidation(byte[] buffer, int offset, int size, bool abortOnError) + 0xde bytes
  System.dll!System.Net.ConnectStream.Read(byte[] buffer, int offset, int size) + 0xe5 bytes
  RestSharp.dll!RestSharp.Extensions.MiscExtensions.ReadAsBytes(System.IO.Stream input) + 0x9c bytes
  RestSharp.dll!RestSharp.Http.ProcessResponseStream(System.IO.Stream webResponseStream, RestSharp.HttpResponse response) + 0x49 bytes
  RestSharp.dll!RestSharp.Http.ExtractResponseData(RestSharp.HttpResponse response, System.Net.HttpWebResponse webResponse) + 0x13d bytes
  RestSharp.dll!RestSharp.Http.GetResponse(System.Net.HttpWebRequest request) + 0x85 bytes
  RestSharp.dll!RestSharp.Http.GetStyleMethodInternal(string method) + 0xd9 bytes
  RestSharp.dll!RestSharp.Http.AsGet(string httpMethod) + 0x44 bytes
  RestSharp.dll!RestSharp.RestClient.DoExecuteAsGet(RestSharp.IHttp http, string method) + 0x2b bytes
  RestSharp.dll!RestSharp.RestClient.Execute(RestSharp.IRestRequest request, string httpMethod, System.Func<RestSharp.IHttp,string,RestSharp.HttpResponse> getResponse) + 0xa7 bytes
  RestSharp.dll!RestSharp.RestClient.Execute(RestSharp.IRestRequest request) + 0x12f bytes
> Tests.exe!Suave.Tests.RequestFactory.req<string>(RestSharp.Method methd, string resource, Microsoft.FSharp.Core.FSharpFunc<RestSharp.IRestResponse,string> extractor, Suave.Tests.RequestFactory.SuaveTestCtx ctx) Line 46 + 0x23 bytes F#
  Tests.exe!Suave.Tests.gets@76.Invoke(string resp_str) Line 76 + 0x62 bytes  F#
```

/cc @ademar
Fixes #48

This time it should fix it, I replaced RestSharp with System.Http.Net and
it all just works. I guess RestSharp didn't have a proper model for when
it disconnected/kept the connection alive.

Further, introduced a bit of logging infrastructure pertaining to #17 but
haven't replaced all call-sites of Log.log yet. However, the added logging
should give enough of a view of what is going on and when TcpClient is
cancelled.

This will most likely affect performance, so the introduced interface has been
done as a 'deferred' log method that you pass a function to, so that the
function is not evaluated every time, but only if the log level is low enough
(or equal to that of the log line).
Merge branch 'bugs/48-trace'