Refactored, added support for custom-fields dictionary

- Refactored hostname lookup so it's only called once on startup and not everytime a message is logged
- Added support to log a custom dictionary as additional fields:  

```python  
logger.debug({
   "Type": "Request",
   "User": "Joe",
   "Message": "GET /my/url"
})
```  
Sends this GELF message:  
```json
{
   ...
   "full_message": "GET /my/url",
   "_Type": "Request",
   "_User": "Joe"
}
```