Extract SwingUI interface

The SwingUI class was renamed to SwingSDIUI, and a SwingUI class was
extracted. This will allow us to type UI checks on SwingUI instead of
the AbstractSwingUI class, which may not make sense for Swing-based UIs
to extend.
SwingTextDisplayViewer: update compatibility

Now compatible with all SwingUI implementations, checking against the
interface instead of the Abstract class.