Differentiable Programming for Computational Plasma Physics