Implemented table rows as records

Implemented table rows as records to allow for safe/more powerful data
manipulation.
Merge branch 'dev' into table-refactoring-2
Merge branch 'table-refactoring-2' into dev
Made records selectable

Added getters, setters, and a boolean property for showing whether or
not a record is selected.
Added a listener for the table selection

Added a listener for the table selection that updates the selection
properties of the corresponding records when it changes.
Made ErrorEllipse abstract et al.

Made ErrorEllipse abstract because (1) its constructor was getting too
long and (2) it provides more flexibility. Along with this change, I
updated existing usages of ErrorEllipse to  still work.

Also added getSelected() and getConfidenceLevel() to ErrorEllipse.
Merge branch 'table-refactoring-2' into dev