Dispatch

Use [`multipledispatch`](http://github.com/mrocklin/multipledispatch) to handle `unify` and `reify` dispatch.

Also implement term, argument, operator functions

Also support Py3

Actually this turned into a major PR.