Coarsening is a much harder problem than refining. There have been projects within FEniCS which use an "edge-collapse" algorithm to coarsen, see for example:
dolfin/refinement/LocalMeshCoarsening.cpp
but it is probably not very robust.
This is an area of ongoing interest, so keep watching - something new will probably appear this year.