gamma matrices in dimensional regularization

- [ ] If the only purpose of `GammaMatrices` is to be a container for global variables it should be removed
- [ ] `S1`, `G` and `G5` are `Basic` instances (`TensorType`). Does this make sense? More generally, does it make sense to use classes for all these "factory" functions?
- [ ] `p` and `q` are `Basic` instances (`TensorHead`). Does this make sence?
- [ ] Considering `TensorType` and `TensorHead`: Their semantics clash with the rest of SymPy - throughout this module `type(obj)(*obj.args)==obj` does not hold.
- [ ] `p(-m0)==p(-m1)` raises an error.
- [ ] How much is the use of the strings "Lorentz" and "Euclidean" hardcoded?
- [ ] `factor` and `simplify` raise errors when called on `TensorExpr`