Node: Add use-site variance to extra info methods

get() and remove() now take a covariant key. put() can’t be variant
since it also returns the previous value, so a new set() is added that
takes a contravariant key.

CC #17. This can be used to solve the problem from this comment:
https://github.com/ceylon/ceylon.ast/issues/17#issuecomment-46664081
Key<out Anything> or Key<in Nothing> are supertypes of any key type.
Add sample: RemoveExtraInfoVisitor

Removes additional information for some given keys from an AST. Uses
use-site variance to abstract over keys of multiple types (CC #17).

RemoveExtraInfoVisitor was first proposed in #47, and later in #51.
Add tests for RemoveExtraInfoVisitor
Work around ceylon/ceylon.language#573