Bump API_VERSION to 1.15
Leverage VCR sensitive data filters

VCR has the ability to filter sensitive data from your cassettes automatically. What I've done here is add three environment variables: DOCKER_API_USER, DOCKER_API_PASS and DOCKER_API_EMAIL. Each docker-api developer will set these in their work environment and the spec tests will automatically pick them up. This allows each user to run sensitive tests using their credentials automatically.

From the VCR side, each occurence of these credentials is stripped from the VCR and replaced with the subsitute. When the VCRs are replayed, the process is reversed. The default values in the spec_helper will make sure that VCR replays on Travis will pass.
Add Rake tasks for VCR

Add Rake tasks for running spec tests against a live Docker daemon as well as a TESTING.md document that describe how to run the test suites.
Use #streaming_logs instead of #attach in Rspec

In Docker::Image Rspec tests, the actions are happening too fast to successfully attach and collect the STDOUT. Tests were failing because the container in question was already stopped when we tried to attach to it.

In addition, the #streaming_logs method in Docker::Container was appending a newline to the end of each line it was printing. This was causing files to be printed double spaced ("line\n\n"). As such, the array is now being joined on an empty string.
New Feature: Specify repo_tag in #push and #remove

For Docker::Image, this commit adds the ability to specify a specific repo_tag/name to push or remove.

In the API, the push and remove endpoints accept a name, which is different from an ID. The instance methods here were defaulting to just the ID which meant that if two tags pointing to the same image ID we couldn't delete the name (i.e. "untag") or push the repo_tag (i.e. when the same image belongs to two different repositories).
Add project_dir helper method to Rspec tests

Rspec tests were failing against remote API endpoints because the paths were not fully qualified. This commit adds a `project_dir` helper method to spec_helper and leverages that helper method in the Docker::Image rspec tests.
Stub ENV instead of overwriting for docker_spec

The docker_spec tests rely on leveraging the built-in Docker handling. This means that people using boot2docker need to be able to leverage their default configuration. This commit changes the way we handle ENV variables in the docker_spec tests by stubbing the ENV constant instead of overwriting it.

This also introduces a new Docker module method: reset! Like reset_connection!, this endpoint resets the values in Docker.
Allow a nil parameters for for Docker::Image.build_headers
Add OperatingSystem key to Docker.info Rspec
Modify target keys for Docker::Container#top Rspec

The keys that you get back via the API for #top depend on the version of `ps` installed on the host running the docker daemon. For boot2docker, this means that it only includes PID, USER and COMMAND. This commit should address that issue by expecting the only common key: PID.
Update images used in Rspec tests

This commit is kind of large as it entirely changes the base images used in just about every call. The Docker Hub says thats the 'base' image has been deprecated so this is a good opportunity to replace it. The direct replacement would be ubuntu but debian:wheezy has the same necessary feature set for a fraction of the size.

In addition, when images need to be imported and exported, we will use tianon/true (which is the smallest runable Docker image on the Docker Hub). This reduces the need to stub out the HTTP for URI import because we can have a tiny (~ 100B) tarball in the repo. The total size of the spec directory with all the VCRs is ~ 800K.

Anytime we need to download an image over the internet (and not run it) we will use the scratch image. This is the smallest image but it isn't runnable so its perfect for tests when we dont need to have a functioning container.

To facilitate tests where we are creating images that maybe need to be uploaded to a real Docker Hub, we will leverage the DOCKER_API_USER environment variable to help name the images.
Add cleanup to Rspec

When you run the Rspec tests against a live Docker daemon, you end up with a LOT of cruft and artifacts. Some of these artifacts will actually cause future tests run to pass/fail when they aren't supposed to. This commit adds 'after' statements that clean up left over images and containers to ensure that each unit tests faces a fresh Docker daemon.
Add VCR cassettes for Rspec tests

Here are the VCR cassettes for the Rspec tests at this point in time. As of this commit, the current functionality has been upgraded to support Docker API 1.15.
Add Docker::Exec, Docker::Container#exec

There is a lot going on in this commit but the summary is that the gem will now support runing exec instances inside containers. The Exec API appears to be a totally separate API from Containers to I created its own class. However, I did add an #exec method to Docker::Container to allow people to easily create exec instances from Container objects.

In fact, that is how I recommend people use the Docker::Exec functionality and thus why it is the only method documented at the moment. The Exec API is very young and functionality for Exec instances does not mirror that of Containers.

As part of adding Docker::Exec, I moved the #attach_for, #hijack_for, #attach_for_tty, #attach_for_multiplex and #debug methods from Docker::Container to Docker::Util so that I could share that library code between Docker::Container and Docker::Exec.
Use DOCKER_HOST stub for VCR cassettes

To address the issue where Travis was failing due to the URI not matching. The correct way to fix this issue is to use `:match_requests_on` but the issue is that the `URI` library can not accurately parse unix socket URIs. To get around this we are using the `filter_sensitive_data` feature to replace the host portion of the URI with a stub to be filled at runtime.
Fix typos and incomplete sentences in TESTING.md
Leverage default `join` behavior for #streaming_logs
More Travis Fixes

1) Cleanup containers for exec tests
2) Leverage swipely-branded test fixtures
3) Rebuilt VCR cassettes
4) Use LICENSE instead of Rakefile for file comparison
Fix `rake quality` errors
Use File.join & shared contexts

- Use File.join instead of String joins
- Move project_dir method into the "local paths" shared context