Update Node extraInfo to use key objects

Adds put(Key<Type> key, Type item), get(Key<Type> key), and
remove(Key<Type> key).

The key advantage is that everyone can just add and remove extra info
without caring about other libraries; before, you would have had to
carefully coordinate that, since there was only a single extraInfo
field.

Closes #17.
RedHatTransformer: Fix token order in Bounds

Depending on whether a Bound is used as a lower or an upper bound,
its token (< / <=) appears before or after the endpoint, which affects
the correct token order. We now record the information whether it’s a
lower or upper bound in the node’s extra information (#17) when
transforming the WithinOperation, and then use that when transforming
the Bound itself.