Give tokens a value when possible

When a token can only have one value, store that value along with the
token. This is useful for unparsing kotlin.
Add an intention to simplify negated binary expressions

Given an expression of the form `!(a op b)`, replace it with `a !op b`.

For example:

    !(a < b)    -> a >= b
    !(a is Int) -> a !is int
Merge pull request #371 from Stebalien/push-not-in-intention

Add an intention to simplify negated expressions.