Update to put conversion functions into a module.
Merge branch 'master' into restructure
Update to centralize validation.

It would be nice if there were automated tests, but this seems to conver the
main issues.

I'm also not sure if there is a better return value here or not.
Update to move main gui section into a separate file.

A possible next step would be to merge the console and gui programs. If
parameters are specified then run the console version, otherwise pop up the
gui? Although another possibility would be to fill in the values from the
parameters. I'm not sure if that's any more intuitive.