cbcbeat: an adjoint-enabled framework for computational cardiac electrophysiology