rewrite TildeTransform as decorator for VariableTransform

TildeTransform expands ``~`` to ``$HOME`` which means it is sensitive to
the order of transform-- it must always be applied before variable
transforms.

However, TildeTransform is not a subclass of VariableTransform either--
it's an entirely optional feature. Therefore TildeTransform makes the
most sense in the form of a decorator.
correct docs for transforms