Parse empty string arguments correctly.

When the parser encountered an empty string (e.g. `""`) it was matching the
`soft_string` or `hard_string` rule, but didn't include any named matches
(i.e. any `literal` characters) so it returned the whole matched string
instead.

After experimenting with various ways of matching the opening and closing
quotes, it ended up being a smaller and more understandable change to just
add a rule to explicitly match empty strings.

Fixes #139
Support commented lines.

Any line beginning with a # will be treated as a comment and ignored. A #
later in the line doesn't (yet) indicate a comment.
Prevent blank lines from causing a parse error.

This was an issue as most commands currently can be preceded by
spaces, but there was no rule to support spaces alone.

The behaviour of a blank line is now identical to that of an empty
line; by default the `git status` command, overridden by
gitsh.defaultCommand
Wrap the binary in C.

This will allow us to use gitsh as a sh-bang line, and hopefully to set the
process name correctly. The C code has deliberately been kept as simple as
possible; the intention is to keep the majority of the functionality in
Ruby.
Correct relative shell command parsing

This also makes some changes to identifier parsing. It replaces the A-z
pattern match with a more specific one that does not implicitly match characters
in between Z and a in the ASCII table. Also adds some necessary explicit
matches for underscores and such. Improves variable and identifier parsing
specs.
Mimic sh(1) when handling unset variables.

If an unset variable is used as an argument, it is dropped from the argument
list.

For example:

    & commit -m $foo
    error: switch `m' requires a value
    ...
    & :set foo "This is a commit"
    & commit -m $foo
    (a commit is created)
Flesh out installation instructions.

Adds an INSTALL file to the distribution tarball explaining the subtleties
of installing gitsh that can sometimes cause problems:

1. Rubies from Ruby version managers are ignored.
2. GNU Readline and libedit have some differences.
Version bump: 0.7
Arch package for version 0.7
Pass a script file as an argument.

* Renames Comment to Noop.
* The parser will match blank lines. This never happens in interactive mode
  because of the default command.
Namespace command classes

Move all command classes under the `Commands` namespace. This helps quick
scanning of which classes are commands, since not all of them end with the
word `Command`.
Add $_prior, $_rebase_base, $_merge_base variables

* `$_prior` is like `@{-1}`, but easier to remember and search for. It also
  expands to the name of the prior branch, so it can be used for things like
  `push origin :$_prior`.

* `$_rebase_base` is the base onto which we are currently rebasing, e.g. for
  `rebase --onto foo bar baz` it would be the SHA1 of the head of the `foo`
  branch.

* `$_merge_base` is the base commit of the current merge. Equivalent to
  `merge-base HEAD MERGE_HEAD`.
Execute scripts piped to STDIN.

Commands will be read from the standard input when

* the standard input is not a TTY, or
* '-' is passed instead of a path to a script file.
Tweak help: command is not optional.
Added :q alias for :exit command
Improve tab completion for files with spaces.

This involved some parser changes to accept escaped characters in non-quoted
arguments.

The tab completion isn't perfect: When the argument is prefixed with a
single quote, the completed version will still get escaped, but shouldn't be
because of the hard quotes.
Integration spec covering quoted completion.
For single quoted paths, don't escape spaces.
Don't escape spaces in double-quoted arguments.
Memoize quoted method.

This will be called N+1 times for N paths.