Force Locale::TextDomain to encode in UTF-8 and to decode all messages.

Based on a discussion with Locale::TextDomain maintainer Guido Flohr. He is
adamantly opposed to returning decoded strings, but points out that through
the combination of setting the `$OUTPUT_CHARSET` environment variable and
binding a filter to the domain, we can get it to properly decode strings. So
let's do that.

Reported in the discussion of pull request #46.
Return originally-cased keys from get_section.

Depends on Config::GitLike 1.10. With older versions, the lowercase keys will
still be returned. Resolves #48.
Fix typo.
Show list of commands when no command passed to sqitch.

Thanks to BryLo for the suggestion.
Add test that fails due to non-preservation of change order.

From the plan, that is. I'm a bit mystified how to solve it as this point,
so [asked on SO](http://stackoverflow.com/q/13369187/79202).
Preserve original plan order when dependencies allow it.

The original
[`tsort`](http://alumnus.caltech.edu/~copeland/work/tsort.html)-derived
algorithm did not attempt to preseve the original order of the list of
changes. My thanks to @user5402 for providing the solution to fix this issue
in [this SO answer](http://stackoverflow.com/a/13370233/79202). As a
side-effect, a couple of other tests that had been listing changes in the
order they are specified as dependencies now preserve the original order
there, too.
Just assign; no dupes are passed.
Document (but hide) Config->original_key.

Allows the pod coverage tests to pass.
Update Changes.
Add issue number to Changes.
Respect core.plan_file.
Improve failed change log error handling.

I was getting a failure that just said the transaction was rolled back, with
no notice of the original error. This was happening because the deploy script
properly ran, but Sqitch's logging of the change failed.

So we do exception handling around the logging of the change. If it dies,
Sqitch now vents the underlying error, tells the engine to roll back work, and
then runs the revert script so as to restore the database to its original
state.
Parse options before bailing with no command.

This allows options that require no command (--help, --version, etc.) to work.
Restore command args.

Inadvertently removed in 64421dc1906d65bddf09ada950abff7516fe6d25.
Suppress duplicate "Deploy failed" message.

In the "tag" and "all" modes, after a deployment fails, prior changes are
reverted and then a final "Deploy failed" message is emitted. So we ended up
with two of those emitted when the failure was due to a logging failure. So
fix it by setting the ident for the logging failure exception to "private" and
suppressing it in the "all" and "tag" modes.
New failing ordering test.

This pretty much has me licked. Rethinking how to do this stuff.
Stop reordering changes when parsing the plan.

They were able to be reordered based on dependencies, but this led to
different orders in different runs, especially if the plan was changed since
the last run.

Instead, throw an exception if the order is invalid. But work hard to suggest
to the user how to edit the plan to fix the issue by tracking ordering issues
and providing a hint with the recommendation to move a change x lines in the
plan file to fix the problem.
Rename sort_changes to check_changes.

You know, since it no longer sorts them.
Add `parent` to Plan::Change.

Will be using this as part of the info for the ID.
Add more info and update the ID.

Change IDs now include the parent ID in their hash values, as well as the list
of dependencies and the note. The old ID and info is preserved in `old_info`
and `old_id`.