Updated the tab-completion.
  Updated completion and input handlers.  (broken)

  This is the last work-in-progress commit of the day, the next
 commit will restore functionality.

  I'm doing two things here:

  * replacing readline with get_line, which operates on an
    std::string instead of a buffer.

  * Changing the completion code to work on tokens.

  This means that I don't need to split the input line into
 prefix/suffix/token twice:

  * Once in the completion code to look for matches.
  * Once in the readline loop to replace the token with the expanded
    reply.

  Reworking the input-reading into a function that operates on a
 std::string will help simplify the code and allow this to be done
 more easily.

  (Renaming the function allows both implementations to be compared
 until complete.)
  Working TAB-completion.

  This commit allows tab-completion to work correctly:

    * The completion works on any substring of the available
      choices.

    * Ambiguities are handled.

    * The reading of lines uses std::string.

  This updates #90.
  Call the new get_line function.

  This is part of #90.
  Prevent alert() from segfaulting when no args are present.

  This closes #92
  TAB-completion completes on the names of env. variables.

  Though I guess this isn't terribly useful.

  Updates #90.
  Tilde expansion works.

  TODO: This doesn't handle "~foo", just "~ -> $HOME".

  This updates #90.
  TAB-completion is case-insensitive.

  This updates #90.
  File/Directory completion supported.

  This updates #90.