Use grepprg for AsyncGrep

If someone's customizing their grep command, we should use that. On
Windows, we should be using findstr unless configured otherwise.

To get the exact same behavior as before, use:
    let &grepprg = 'grep --line-number --with-filename'
or (as the help for grepprg suggests):
    set grepprg=grep\ -nH

(They're equivalent.)
Accept $* placeholders for grepprg and makeprg

grepprg and makeprg allow optional $* placeholders for the location of
arguments. If omitted, the arguments are appended to the prg command.
Emulate this behavior for AsyncGrep and AsyncMake.
Add support for a simple statusline segment

Adds asynccommand#statusline() that has configurable text to display the
number of background jobs. Does not automatically modify 'statusline'.
Add a pending command listing

Add AsyncPending to make it possible to find in-progress log files.
Helpful to see the output of a pending compile command or to figure out
what you have running in the background.

Only uses existing information, and only some handlers add a title to
their env Dictionary. May be more useful if there's more information
here (and it might be nice for all of the output windows to have useful
titles).
Add documentation for other commands

I originally omitted docs for these commands because I considered them
examples and wanted to move them to separate plugins, but since they all
replace built-in vim functionality I'm keeping them as part of the core
plugin.