Enhance errors returned by httpExecute.

This PR fixes a leak by closing the body steam and creates a custom error type. The error can by used as a string value via the Error() method or sensed using type interrogation:

```
resp, err := t.consumer.Post(
		"http://api.twitter.com/1.1/statuses/update.json",
		map[string]string{"status": text},
		accessToken)

if err != nil {
	if oauthError, ok := err.(oauth.HTTPExecuteError); ok {
		result := map[string]interface{}{}
		if err = json.Unmarshal(oauthError.ResponseBodyBytes, &result); err == nil {
```