added QuGate.init_from_tensor_product