Add proper 'stage' command

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
stage: add edit command

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
diff: document --staged

Synonym for --cached.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
grep: add --staged option

Synonym for --cached.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
rm: add --staged option

Synonym for --cached.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
stash: add --stage option to save

--no-stage is synonym for --keep-index.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
stash: add --stage to pop and apply

Synonym of --index.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
submodule: add --staged options

Synonym for --cached.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
apply: add --stage option

Synonym for --index.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
apply: add --work, --no-work options

'git apply', 'git apply --index', 'git apply --cached' do different
things, but what they do is not precisely clear, specially since no
other commands has similar distinctions.

With --no-work (--work being the default), it's clear what the option
would do; modify, or not, the working directory.

So, --work (the default), doesn't cause any changes, and --no-work
enables the current --cache if used with --index.

Eventually --work might replace --cache, if these options are
standarized in the whole git toolset.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
completion: update --staged options

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
reset: add --stage and --work options

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
reset: allow --keep with --stage

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
completion: update 'git reset' new stage options

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>