Creating assertable error types.

I'd like to be able to assert the type of error, rather than checking against the return from `err.Error()`. E.g:

```go
con, err = d.CreateContainer(create)
if err != nil {
    if _, ok := err.(*docker.ErrorNoSuchImage); ok {
        pullImage("an/image")
    }
}
```

vs

```go
con, err = d.CreateContainer(create)
if err != nil {
    if err.Error() == "no such image" {
        pullImage("an/image")
    }
}
```