Specify the check, build and run commands at runtime

Adds arguments for check, build and run
Adds a "shotgun" logger so shotgun logs are distinguishable from normal stdout and stderr
Adds a factory function
Uses io.Multiwriter to write to stdout and stderr