Improve error handling

* Return optionally structured errors with more information.

```
if hcErr, ok := err.(hipchat.Error); ok {
	log.Printf("[%d] %q", hcErr.Code, hcErr.Message)
}
```

* Actually return the error if a message wasn't posted.

This removes the human friendly error message being reported by https://github.com/andybons/hipchat/issues/8 and returns a standard Hipchat.Error instead.
The name seems dangerously close to the built-in error type. maybe hipchatError?