Fixes for tof and tracer solvers

This PR contains a few new features and fixes:
 - Refactored the DG solver for better maintainability.
 - New implementation of multi-dimensional upwinding (MDU), the old implementation was plain wrong.
 - Can now use MDU with tracer computations.