Better build options

Including setting the program version based on a git tag.
Style nits, and a note
Support icons, more tests
Properly sort by Label, alter test data for this
Don't try to use bad data from YAML, print a warning when needed

Bad data from YAML is ignored, and if no usable data is found then a
warning is printed to give the user a clue about what's wrong.

I also broke some more code out of the cli Action definition to make
testing easier.

And finally, I added the 'reallybad.yml' file which has no usable
data, for testing.
New codebase, new build
It's better to do here
Missing steps, usage