Return summary data from cli!

Prior to this commit, the banner/summary data generated by
the upstream `parse-cli` function was not being returned as part
of the result of our `cli!` function.  This meant that if a user
wanted to do some additional validation of the cli arguments
(such as validating extra arguments that are left over after the
options parsing), they had no way to print the help message
if that validation failed.

This commit changes the code to return that summary data
in addition to the other data it was already returning.
It also improves the test coverage and docstring.

The changes should hopefully be backwards-compatible.