Make failPropagate take a badToken argument

This means we don't have to look at the type of the input to determine how to
behave, which is another step on the road to killing the Badness class.

Signed-off-by: Casey Dahlin <casey.dahlin@gmail.com>
Remove Badness class in favor of constructed error tokens

When we need to create a token to wrap and lift a bite of garbled input, we
used to have a prescribed class called "Badness." Now we have an overloadable
method on parsetree which takes exactly the bad string and returns whatever it
pleases.

Signed-off-by: Casey Dahlin <casey.dahlin@gmail.com>