Augmented completions for arguments, packages

NOTE: Not ready for merge, but putting this up as a PR for now.

The sum of this PR: we now keep track of the current 'active' argument when completing functions, so that we can provide argument specific completions. Right now, we use it for:

- `"pkg"`, `"package"` -- package name completions.
- `"file"`, `"files"` -- file name completions.

This implies that we get better completions 'for free' in e.g. `read.table`, `browseVignettes`, `packageVersion`, and so on.

TODO:

- [ ] Implement completion limit on files (right now this just blows up with e.g. RStudio itself)
- [ ] Think about more files we might want to ignore.
- [ ] Add a bit on the completions returned signalling whether a particular set of completions is cacheable -- if we narrow the set of completions returned, we need to let the client know that it cannot use that as a cache.
- [ ] Investigate support for e.g. `` install.packages(pkgs = c(...)) ``. Note that this is quite tricky because we are now embedding an 'argument' context inside of multiple contexts; e.g. either we special-case some functions or we figure out how to handle it in general. However, getting this machinery right would enable e.g. `match.arg` completions, for example.
I would typically used std::transform for this sort of thing.