New Rules UI and associated cleanup

This contains several changes related to rules and rule management:
* An updated "Rules" dialog, which contains subtables for filter rules and state-qualifiers that show how those items will be rendered.
* State qualifiers can now be toggled independent of metadata filters.  As a result, you can now display combinations like "all segments with metadata and the fuzzy-match state-qualifier", "all segments with the mt-suggestion state qualifier and a rule based on MT Confidence ITS Metadata", etc.  Additionally, all state qualifiers can now be used as filter toggles, regardless of whether a UI rule is defined for them.
* Previously, filter rules that didn't specify a match criteria would match all metadata by default, leading to confusing results.  These rules are now discarded by the parser (with a warning in the log), and don't match any segments.
* Fixed various exceptions related to double-clicking on various parts of the segment table.
* Various cleanups in the rule/rule config/rule parsing/segment filtering code.
* A number of new unittests.
* Add a custom JTable subclass called OTable that disables the cell-selection rectangle which Swing always renders (at least on Mac) regardless of whether our table allows cell selection.  This is currently just used for the rule tables, but may be useful elsewhere.