Unification - remove `patternify`

Remove `patternify` function from the unification system

Previously users would create patterns ahead of time

```
pattern = patternify(sin(x)**2 + cos(x)**1, x)  # x is the wild
rl = rewriterule(pattern, 1)
```

This approach was taken because the `Wild` object only works with `Expr`s.  We had to find another way to specify wilds in generic way.  Pattern is an invalid sympy expression tree.  Now wilds are expressed separately from the pattern and the binding happens at rule construction time in a non-sympy layer

```
pattern = sin(x)**2 + cos(x)**2
wilds = [x]
rl = rewriterule(pattern, 1, wilds)
```

Instead of one bad object we have two good ones.

This PR removes the `patternify` function and introduces the `wilds` keyword to `rewriterule`, `unify`, and `deconstruct`