Add autocompletion plumbing
Rename internal completer method
Add autocompletion to the CLI
Fill out many more features (including internal changes)