Created the on_message_parse hook.

  This allows a message to be rewritten purely via Lua, and will
 be used for GPG-support, etc.

  This updates #87.
  Don't leak copies of messages.
  New member CFile::delete_file( path );
  Fixed compilation failure in debug-build.
  Use CFile::delete_file() rather than unlink().

  This is basically for logging purposes as I rework some of the
 message-handling.
  Added stub CScreen::choose_string.

  This is part of overhauling the TAB-completion code to resolve
 ambiguity.
  moving towards menu-drawing.
  Updated the choose_string primitive.

  We correctly draw the choices, and allow tab-navigation.

  This means we can now start using this when there are ambiguities in
 the TAB-completion code.
  Updated TAB-completion handling.

  We've changed (and broken in the process) the code that handles
 the expansion of input when tab is pressed.  Rather than returning
 a single match we now return a vector of possible matches:

    * If the vector is empty then nothing happens.

    * If the vector has one member then we use it.

    * If the vector has >1 entry then we present a menu which the
      user can use to select their preferred choice.

  TODO:  Handle the completion, as we did before.

  TODO:  Allow "esc" to cancel the completion menu, leaving things
         unchanged.

  This updates #90.
  ESC cancels the completion menu.
  Updated comments.
  Show/Hide cursor when using the menu for tab-completion.
  Comment updates for the TAB-completion code.

  This updates #90.