Get rid of dependency on uniplate so AST does not need to derive Data or Typeable

This is motivated by wanting to add things to the AST that cannot
derive Data or Typeable