Free-piston engines