Fix substitution bug in Erlang code representation

Geniplate transformers were used to carry out substitution.
Unfortunately they traversed down the strings:

    *Erlang> ("x" // "y") (Ask "yy")
    Ask "yx"

Changed to let Code and Pattern be a Functor, so substitution
is now fmap.

Bug discovered by Anders Persson.