Add hints to command docs to show subcommand help

Summary:
For some it can be counter-intuitive to have to type:

  $ arcyon query --help

When this is perhaps more legible:

  $ arcyon --help query

Make the subcommand help more discoverable by adding hints to top-level
commands for displaying sub-command help.

Test Plan:
$ arcyon --help
$ arcyon show-config --help
$ barc --help
$ barc gc --force --aggressive
$ barc gc --help
$ arcyd process-repos --help
$ ./precommit.sh

Reviewers: jwilkin1, rthomps1, jevripio

Reviewed By: jevripio

CC: arcyd

Differential Revision: https://sibld.phab.dev.bloomberg.com/D189
arcyon showconfig: clearer output

Summary:
Change the language of 'changed uri' to 'assumed uri', otherwise it can
seem as if it has modified a config file.

Make the obscured display of certs consistent by extracting a new helper
function.  'Top and tail' the cert for easier recognition that the value
is as expected without revealling the whole thing.

Test Plan:
$ arcyon show-config --uri http://127.0.0.1
$ ./precommit.sh

Reviewers: jwilkin1, rthomps1, jevripio

Reviewed By: jevripio

CC: arcyd

Differential Revision: https://sibld.phab.dev.bloomberg.com/D185
Arcyon: refactor, move 'add_argparse_ar...' to phl

Enable re-use of 'aont_conduitargs.addArguments' outside of Arcyon by
moving it up into phlsys_makeconduit.

Test Plan:
$ ./precommit.sh
phlcon_differential: put inlines, get diff files

Support adding inline comments to differential reviews and getting
files from the diffs attached to differential reviews.

Test Plan:
$ ./precommit.sh
also exercised in subsequent commits
py/aon/aoncmd_getdiff.py: support getting files

Add support for downloading files from diffs to 'arcyon getdiff'.

Test Plan:
$ ./precommit.sh
exercise on the command-line
examples/arcyon/phlint.sh: fetch and lint reviews

Shell script to expose errors in files attached to differential reviews
that would have been caught with configured linters.

Try with cppcheck, jshint and pyflakes.

Test Plan: phlint-ed a big instance with many reviews
phlsys_subprocess: don't write to stderr on error

Give clients more control over the output of their programs by leaving
the choice of whether to output subprocess errors to stderr to them.

The equivalent string is already raised in the exception in case clients
want to echo it out.

Test Plan:
$ ./precommit.sh
phlsys_cppcheck: add simple 'cppcheck' wrapper

We'll want to add support for the ace linter 'cppcheck' soon, make a
wrapper for interacting with it.

Test Plan:
$ ./precommit.sh (dead code fail waived)
proto/linterate: an automated lint excitor

Download files from differential reviews and apply robust linters to
those files.  Where almost certain errors are detected, make inline
comments on those reviews.

This is emphatically not a stand-in for CI, more a utility for getting
developers excited about CI and showing what's possible with some of the
fantastic linters out there.

This improves on 'phlint' by adding configuration options and a memory
of what it's already covered.  'linterate' only supports cppcheck for
now, 'pyflakes' and 'jshint' to follow as they become battle-tested.

Test Plan:
$ ./precommit.sh
linterated a large instance.
Arcyd: add user action log to dashboard

It's currently difficult to determine what actions were recently
performed by users of the system.  Explicitly log all actions and
display recent ones on the Arcyd dashboard, this will help give
confidence that the system is working as expected.

Test Plan:
$ ./precommit.sh
$ ./testbed/arcyd/acceptance_tests.sh
$ ./testbed/arcyd/loop_test.sh
$ ./testbed/arcyd/status_html_testbed.sh
$ ./testbed/arcyd/test_shell.sh
Arcyd: log git and conduit io to a file

Currently it's hard to piece together what Arcyd has written across all
repos and Phabricator instances, make overview easier by collecting a
summary of all io write operations in one file.

Test Plan:
$ ./precommit.sh
$ ./testbed/arcyd/acceptance_tests.sh
$ ./testbed/arcyd/test_shell.sh
arcyd/test_shell: log git http server out to file
arcyd/test_shell.sh: add 'kill' and 'start'

Make it easier to test arcyd restarts by supplying 'kill' and 'start'
scripts so it's easily possible to bounce it.

Test Plan:
$ ./testbed/arcyd/test_shell.sh
$ ./kill_arcyd.sh
$ ./start_arcyd.sh
Arcyd: reduce restart time by caching urlwatcher

Restart time has grown too much, reduce it by dumping the state of the
phlsys_urlwatcher and loading it on startup.

Test Plan:
$ ./precommit.sh
$ ./testbed/arcyd/acceptance_tests.sh
$ ./testbed/arcyd/test_shell.sh
  .. create new review while arcyd is down ..
arcyd/test_shell: add a second repo

Make it possible to exercise multi-repo setups by introducing a second
repo into 'testbed/arcyd/test_shell.sh'

Test Plan:
$ ./testbed/arcyd/test_shell.sh
fixup! Arcyd: reduce restart time by caching urlwatcher

Closures capture the name of the variable, not the value - use
functools.partial to ensure that 'process_func' actually processes each
repo.

Test Plan:
$ ./precommit.sh
$ ./testbed/arcyd/acceptance_tests.sh

make sure both repos are processed in:
$ ./testbed/arcyd/test_shell.sh
fixup! Arcyd: add user action log to dashboard

Output the actual review branch name, not the getter function itself.

Re-order the comment to make more sense.

Test Plan:
$ ./precommit.sh
update a revision in
$ ./testbed/arcyd/test_shell.sh
gen_doc: generate manual pages under doc/man/*

Make it easier to access the documentation for each Arcyon command by
writing the output of 'arcyon COMMAND -h' to a versioned file.

This has the very convenient side-effects of
- assigning each command reference a URL on github.com
- making changes to command doc easier to review
- bulking out the documentation to make the whole thing look better

This has the not so convenient side-effects of
- taking up a bit of extra space in git history and working copy
- complicating merges slightly, need to be careful to gen-doc for the
  correct result
- contributors may be tempted to edit the .txt directly with
  disappointing results

On balance it seems like a good thing, could also consider using
a gh-pages branch for this but that wouldn't have all the same
advantages and be a bit fussier to update.
add meta/compileall.sh: easily update all .pyc's

When installing phabricator-tools somewhere, it's important to
(re-)generate the .pyc files as the installation location may be
read-only to other users.

Test Plan:
$ git clean -fx
$ ./meta/compileall.sh
arcyd/acceptance_tests: exercise config ref more

Exercise conditions 'no config ref', 'config ref, no repo.json' and
'config ref, repo.json only contains {}'.

Test Plan:
$ ./testbed/arcyd/acceptance_tests.sh