Add a utility function to replace constants in sympy expressions.
Provide the full namespace information to state updaters.
Do not try to replace constants in the linear state updater for now.
With the slightly changed semantics of group-specific and run namespaces, not setting a group-specific namespace should be identical to setting an empty one.
Refactor the function mechanism a bit (codegen.functions is gone) -- biggest change is that the registration of function implementations now doesn't care about available codegen targets (which led to many problems due to them not being available yet), it just stores the implementation with whatever key was given (i.e. a string, a `CodeGenerator` or a `CodeObject` class) -- handling the various fallbacks is only done in `__getitem__`.