Refactor to try and support multiple packages

If we want to support more than just testing the package in the
current directory, then we need to support multiple packages.
Introduce a context type that we can hopefully use to do this.
Get multiple packages working with mocktest

The way the withmock is run makes it really hard to know what packages
are being tested.  So introduce a new command (mocktest) that you give
a list of packages, not a command string.

With the new command in place, update the workings of the mocking code
so that we setup a GOPATH that can have mocked and non-mocked versions
of the same package installed - along with under-test code that
doesn't conflict with either of the above.  This results in a more
complicated approach, but "mocktest ./..." can call "go test" a single
time to test multiple packages with different (and possibly
overlapping) sets of mocked and non-mocked packages.

TODO: Update documentation, and command usage string
Update withmock to new API

Now that we have mocktest working with multiple packages.  Restore
withmock to a working state in respect to the changes we have made.
Add verbose & gocov options to mocktest

Since mocktest makes up it's own command, we need to expose more
functionality directly.  Such as running tests with verbose output, or
using gocov.
Update usage for mocktest