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.