tools.g3c: Invert the relationship between `func` and `val_func` functions (#329)
tools.g3c: Invert the relationship between `func` and `val_func` functions (#329)

This changes all the algorithms to be implemented using the numba overloading syntax.
This isn't exhaustive, but hits most of the cases.

We can't remove the `val_func` functions until we remove all the callers.
arsenovic/clifford,arsenovic/clifford