Fixed report hang

- Cached the list of row data in ArtifactData to remove extra processing
- Updated ArtifactData compareTo method to compare based on the list of row data instead of the results of getMappedAttributes()
- Cleaned up code - specifically, moved methods that are now only used by ArtifactData into that class.