Add git-ls, a user friendly version of ls-files and more

This is more user friendly version of ls-files:

* it's automatically colored and columnized
* it refreshes the index like all porcelain commands
* it defaults to non-recursive behavior like ls
* :(glob) is on by default so '*.c' means a.c but not a/b.c, use
  '**/*.c' for that.
* auto pager
ls: add -R/--recursive

People can already do "ls --max-depth=-1" but it's probably not as
friendly. One of the use case is "ls -mR" which is basically "git diff
--name-only"
ls(-files): add -M to show "diff --cached" entries

With this, "ls -mR" shows you all changed files in worktree, "ls -MR"
in cache, or "ls -MmR" both (entries will be duplicate). diff-cached
files are bright magenta by default.

FIXME: what about color for -m?
FIXME: -M does not play nice with -c