Handle shell command failures gracefully.
Fix tab completion for branches with a dot

Completion after the dot would be seen as a new branch name. This is correct
behaviour for two dots (e.g. HEAD~2..master) but not for one dot (e.g.
fix-v1.4)

Includes a refactoring of the Completer unit spec, to reduce the amount of
repetition.
Set $PROGRAM_NAME so that gitsh shows up as 'gitsh'
Allow the parser to understand upper and lower case letters.

We should pass bad commands onto git to get the standard
"git: 'X' is not a git command. See 'git --help'." message.
Version bump: 0.5
Arch package for version 0.5
The tarball is for version 0.5
Fix 'Error: undefined method `sub' for nil:NilClass' when newline is included git alias

When there is at least one newline in git aliases like:

    ln = log --pretty=format:'%C(blue bold)%h %C(yellow bold)%cd %C(magenta bold)%cn %C(red bold)%d\n\n%C(white bold)%s\n%Creset%b'

tab completion fails with 'Error: undefined method `sub' for nil:NilClass'.

This commit fixes the issue.
Rework specs around completing '~'.

This is because if there were no files in '~', the previous test would fail.
So instead, check for directories (which are more likely).

Also adds a test ensuring directory completion functions.
Use the check target to run tests

This provides for tighter integration into the autotools framework. More
details: https://www.gnu.org/software/automake/manual/html_node/Tests.html#Tests

Instead of using

    rspec

to run the full test suite, instead you use

    make check

Fixes #126.
Add an :echo

This `:echo` is much like the shell `echo`: it takes a bunch of strings
and outputs them, separated by spaces, followed by a newline.
Don't distribute version.rb

version.rb is built from version.rb.in by `make`, so it shouldn't be
distributed, but it should be installed.
Add instructions for running gitsh locally to contributing guide.
Use sequence for args, as it will always be an array.
Refactor: GitCommand is a ShellCommand
Forward interrupts to child processes.

When there's a long running child process (any Git command that uses a
pager, `!vim`, etc.) then any interrupt signal should be forwarded to the
child process, rather than handled by gitsh. If gitsh handles the signal it
will request a new line of input from the user, and interfere with the child
process, leaving the terminal in a confused state.

This interrupt forwarding needs to be recursive, in order to handle multiple
interrupts while running a child process that doesn't terminate on SIGINT.
Add completion of remotes.
Add gitconfig to temporary home directory.

Builds have been failing on Travis CI because of the temporary home
directory: there was no gitconfig, and therefore no user.name or user.email
settings, which prevent commits from being created under some Git versions.
Refactor GitshRunner.

We broke the `#run_interactive` method up into several smaller methods.