There is a library you can use with fenics called Gryphon:
https://bitbucket.org/knutesk/gryphonproject
That can do this for you, as well as other examples programmed by hand:
https://fenicsproject.org/qa/2788/options-available-fenics-solving-dependent-problems-method
Based on my understanding of variational forms (which isn't much at the moment), one can discretize the time dependent terms first, with variables at different time steps and then use the same variational form for the space dependent terms.
You just need to use more variables (ex. u_1, u_2, u_3, etc) and the right Runge-Kutta coefficients:
https://en.wikipedia.org/wiki/Runge%E2%80%93Kutta_methods
And the right number and ordering of assign() calls:
u_n.assign(u)
Like they use for the backward Euler method here:
https://fenicsproject.org/pub/tutorial/html/._ftut1010.html#ftut1:reactionsystem