Camellia: A software framework for discontinuous Petrov–Galerkin methods