Fix dynamic shell completions by correcting parameter names
Dynamic completions for the CLI were not working because completion
functions used `_prefix` as the first parameter name instead of `prefix`.
This is incompatible with how `argcomplete` passes it's arguments.
Add regression test for the prefix parameter as well as some basic shell
completion testing.