Tensor based engine for calculating neutrino oscillation probabilities in a fast, flexible, and differentiable way