Request logging normalization (reviewed, pending merge)

Functional tests pass locally with mimic.

On receipt:
```
{
   "@timestamp": "2014-02-03T14:31:30.372355", 
   "@version": 1, 
   "clientproto": "HTTP/1.1", 
   "host": "ubuntu", 
   "level": 6, 
   "message": "Received request", 
   "method": "GET", 
   "otter_facility": "otter.rest.groups.list_all_scaling_groups", 
   "referer": null, 
   "request_status": "received", 
   "short_message": "Received request", 
   "tenant_id": "11111111", 
   "transaction_id": "6a56ae4c-dfb9-47a3-8994-bdc76eb873c6", 
   "uri": "/v1.0/11111111/groups", 
   "useragent": "curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3"
 }
```

On success:
```
 {
   "@timestamp": "2014-02-03T14:31:30.396018", 
   "@version": 1, 
   "code": 200, 
   "host": "ubuntu", 
   "level": 6, 
   "message": "Request succeeded", 
   "otter_facility": "otter.rest.groups.list_all_scaling_groups", 
   "request_status": "succeeded", 
   "short_message": "Request succeeded", 
   "tenant_id": "11111111", 
   "transaction_id": "6a56ae4c-dfb9-47a3-8994-bdc76eb873c6", 
   "uri": "/v1.0/11111111/groups"
 }
```

On failure:
```
{
   "@timestamp": "2014-02-03T14:35:32.431760", 
   "@version": 1, 
   "code": 500, 
   "host": "ubuntu", 
   "level": 3, 
   "message": "Traceback (most recent call last):\nFailure: twisted.internet.error.ConnectionRefusedError: Connection was refused by other side: 111: Connection refused.\n", 
   "otter_facility": "otter.rest.groups.list_all_scaling_groups", 
   "request_status": "failed", 
   "short_message": "Request failed: Unhandled Error: ConnectionRefusedError('Connection refused',)", 
   "tenant_id": "11111111", 
   "transaction_id": "f052f782-e30c-4305-b9a1-7597383ae3bd", 
   "uri": "/v1.0/11111111/groups"
}
```