Move over to passing Messages instead of strings

Adds tests to the pumpkin struct and improves the
interface a little bit.

Move away from deserializing JSON manually and
using the unmarshaller. This still requires coercing
the pattern string into a Regex, but we don't need
to worry about the Regex in our Pumpkin JSON
declaration.

Makes the full pumpkin interface public, this is
"bad" but it makes it easier to test at the moment.

Collect output from stdout and stderr and log those
details in the terminal regardless. Use red to imply
that bad things have happened, but in our case a
non-zero status code isn't a bad thing. It's actually
very helpful and somewhat par for the course.

Please review @aybabtme @terraflubb