Added custom logging instance

Adds custom logging API.
```go
 var myLogger log.Logger = NewCustomLogger()
 hd.SetLogger(myLogger)`
```
API and behavior is backwards compatible.

Comment if you want me to organize code differently.