You use an H-bridge. DPDT relay would work for switching direction, but not for PWM speed control simply because they aren't fast enough and have a switching lifetime. A DPDT wired up for this task is basically the same thing as making an H-bridge out of 4 relays instead if transistors.
In most cases you would normally put the diode in anti-parallel with the inductance to supress flyback current. But for an H-bridge where current can flow through the inductance in either direction you obviously can't do this since it would be a short circuit in one direction. So instead you put the diodes in anti-parallel with the H-bridge MOSFETs. These provide a current path between the inductor terminals to supress flyback current, just like a diode in anti-parallel with the inductance, except the path won't conduct until the voltage across the inductance terminals exceeds the power supply voltage. In this way, it will not produce a short-circuit in one direction across the motor under normal operating conditions.
THis should answer other diode questions.
H-bridge secrets part 1
You'd need an MCU for soft-starts, soft-stops, and soft-reverse.