Refactoring

Extract HasException since its used all over the place

The name Result is unfortunate since it is an aggregate of results (basically a hash of arrays)
makes it confusing to talk about, so I made it a local var instead of a method, to make it clearer
that calling the result is when the evaluation happens

I'd also like to figure out what I want for the line results, and then move the tests over to that
so I can delete the obnoxious Result#to_a method.