error: improve and implement custom error type

Create a new Error type to return custom errors. We also export the new
errors to make the errors comparable.

Another point is to create a new error type instead of using the
"errors" package. This will allow us to extend the errors it in the
future with custom error codes or other private fields.

Signed-off-by: Fatih Arslan <ftharsln@gmail.com>
Merge pull request #1 from fatih/master.error

error: improve and implement custom error type
convert last fmt.Error to the new format and drop name field
error: imply error interface and fix pointer reference.

NewError() not returns the *error* type, which is more Go idiomatic.
Merge pull request #2 from fatih/master.error2

error: imply error interface and fix pointer reference.
container: change XxxContainers() return behaviour

Problems: previously when a NewContainer() creationg fails the whole
process would return a nil. That would be not acceptable for large
number of containers. I.e: if we had 100 containers, one buggy
container retrieval would cause to net get the rest 99 containers.

Solution: return all successfull retrieved containers and silently fail for
failing containers.
Merge pull request #4 from fatih/master.containers

container: change XxxContainers() return behaviour