Lower coupling between Swing UI and RecorderController

In this PR : 

 * Introduce RecorderFrontend : better abstraction of the kind of UI used
 * Move Swing-related classes to a `swing` subpackage of the `ui` package
 * Use an enum for Recorder modes instead of Strings