The latest released version is 1.12.1 @ f8835d9, however the version
string still reflects version 1.12.0, when run with:
```
$ certigo --version
```
Bump version string to lastest released version.
Signed-off-by: Nick Travers <n.e.travers@gmail.com>
This splits the logic into a cli, which handles parsing command line args and
reading files, and a terminal abstraction for handling user input and ouput.
All uses of os.Exit are removed in favor of returning errors.
Overall this enables better testing and reuse of code. Previously we had to
rely on external unit testing for CLI tests, which are harder to write tests.