Add checkout command.
Merge branch 'master' of github.com:theory/sqitch
Add tests to checkout.
Refactor deploy and revert variables configuration.
Don't import unused modules.
Require sqitch() and deploy_variables() as appropriate.
Use the current dir for the Git dir.

Because Sqitch should nearly always be called from the root directory of a
project; that's where the configuration file lives by default, for example.
May want to add an option to point to the git project directory, or we may
want to add code to search for it, depending on how things shake out.

In passing, also require that the `git` object be an instance of Git::Wrapper.
Have checkout manage multiple independent plans.

Rather than relying on the plan from the Sqitch object. This allows us to
remove the code that lets the `plan_file` attribute of Plan be either a file
handle or a file name, which felt weird. Instead, add a `parse` method to
plan, and pass the contents of the target plan to that method. Then add a
`plan` attribute to Engine (it has previously delegated the method to Sqitch)
and allow it to be read/write. The default is still to fetch it from Sqitch,
but now we can set it for other plans, as necessary. In this case, checkout
sets it before reverting, and then again after changing branches, to deploy
with the new plan.

Still need to do some error handling, and the checkout tests fail, since I did
this work on the plane and did not have Git::Wrapper installed. Will take
care of that next.
Copyright.
Decode the plan file contents.
Test checkout option and config merging.

It was not working properly; a merge was missing, and it was not merging `checkout` config settings.
Replace test git repo with mocking.

The Git repo was not working for me, maybe because the directory was not named
`.git`? I dunno; Git said "repository 't/git/checkout' does not exist. But I
think it is simpler to use mocking, especially since the VCS interface stuff
should be abstracted out soon, anyway.

Things seem to work very well, though.
Add the `-y` option to checkout.
Add Pod to checkout.
Document Plan->parse.
Move all of the common code for rebase and checkout into a role.

The new role is App::Sqitch::Role::RevertAndDeploy, and contains all of the
common code (a lot!). This eliminates the need for
App::Sqitch::CommandOptions::deploy_variables and
App::Sqitch::CommandOptions::revert_variables, as well.
Merge branch 'checkout'