Create tar stream for builds

This pull request adds `ContextDir` as a new option to `BuildImageOptions`.  When `ContextDir` is specified (and no tar input stream is provided), the tar stream will be created for the user.

Much of this code was adapted from the following sections in the docker source code:
- https://github.com/docker/docker/blob/d142b18aab2a3b90959a2ab32676b388a5e98769/api/client/commands.go#L138-L163
- https://github.com/docker/docker/blob/77d30e71122c7ec328f79836dcab4409f72e04b9/utils/utils.go#L522-L564
- https://github.com/docker/docker/blob/77d30e71122c7ec328f79836dcab4409f72e04b9/utils/utils.go#L575-L593
- https://github.com/docker/docker/blob/ba726d9148ee616f0ad069bff6c7732815beb6c6/archive/changes.go#L360-L366
- https://github.com/docker/docker/blob/ba726d9148ee616f0ad069bff6c7732815beb6c6/archive/archive.go#L154-L219
- https://github.com/docker/docker/blob/ba726d9148ee616f0ad069bff6c7732815beb6c6/archive/archive.go#L336-L406
Hm, it actually looks like the build command uses a different authorization header ("[X-Registry-Config](https://github.com/docker/docker/blob/8128339bc8fe3ed7f5c8fd9cc69a73d2dd519a83/api/server/server.go#L964)").  This pull request isn't really complete without it.  This relates to https://github.com/fsouza/go-dockerclient/pull/133 I left some comments on #133, since it probably makes sense to get that merged first and then rebase this pr.