High Order Numerical Methods For Hyperbolic Balance Laws: Well-Balanced Discontinuous Galerkin Methods And Adjoint-Based Inverse Algorithms