Preserve whitespace in output on program non-zero exit
Replace use of short array syntax for compatibility

PHP 5.3 is already end of life, but this is a simple enough tweak to keep
the library useable when running under 5.3.
Add functionality to defer to shell built-in filename completion

This change allows user to take advantage of the file/folder name completion
functions that are available under BASH and ZSH normally. Path completion
using ShellPathCompletion is currently only relative to the current working
directory and cannot be customised.

Ideally I'd like to be able to set the working directory for path completion,
and also to specify globs for matching say, only .txt files. Globs are
relatively straight forward to add using the _filedir/_path_files shell
functions we're using, however I couldn't find and nice way to change the
working directory for the functions without complexity or side-effects.

I've implemented deferring to the shell using an exit code. I'm not entirely
happy that this introduces code into the completion hooks that is specific
to ShellPathCompletion, however I'm less keen on the idea of allowing
dynamic injection of code into the shell hooks at the moment; that just seems
like a bad idea for some reason.

Summary of other changes:

* Adds interface for Completion
* BC break: removes CompletionCompletionHandler::isGlobal as it was fuzzy
  in meaning and can be represented better with an explicit comparison:

      $completion->getCommandName() == CompletionInterface::ALL_COMMANDS