completion: Handle more git base options

Because git-completion does not handle a number of git options, any
attempt to complete a command line using these options fails.  The
affected options include --no-pager, --no-replace-objects, --work-tree
and --namespace.

Most of these options are already completed, it is just further
completion that does not work:

    $ git --no-p<TAB>
    $ git --no-pager co<TAB><TAB>
    <list of filenames for completion>

For completeness, add completions for a handful of missing options and
add handling for all of the options listed in git(1), enhancing the
suport for --git-dir to work when the user separates the argument from
the option with whitespace as well as when they use an equals sign.

Signed-off-by: John Keeping <john@keeping.me.uk>
Merge branch 'reset-submodule-trailing-slash' into jk/pu

* branch reset-submodule-trailing-slash:
  WIP built on nd/magic-pathspecs
Merge branch 'rebase-i-comment-squash' into jk/pu

* branch rebase-i-comment-squash:
  rebase -i: comment first line of autosquashed message
Merge branch 'completion-fixes' into jk/pu

* branch completion-fixes:
  completion: Handle more git base options