Regression Test Refactoring

# Changes

### Files and Organization
* Emailer no longer has helper functions that do not relate to emails
* Created regression_utils.py which holds all helper functions

### TestResultsDiffer:
* Now follows the redesign specification
* Gets passed in a test_data and uses it to extract the necessary paths
* The sub methods to diff the database, html report, etc are only passed in the paths to the output / gold files

### TestData
* Now stores pass/fail flags for the various 'diffs' that were run
* Stores an overall pass / fail flag
* Updated docuementation

### TskDbDiff
* No longer relies on an instance of test_data. It is passed two paths upon creation (one for gold, one for output)

### General
* Created an Errors class to collect the messages and errors that were printed to the screen and that will be emailed upon test completion. Prior to this class, an instance of TestData was required to print errors which meant TestData had to be passed to almost every object in the script. Now error reporting is centralized via the Errors class, and TestData grabs the messages from Errors prior to the reports being generated. When the Reports class is refactored, TestData will most likely not need to do this.
* Reorganized the order of classes in regression.py to mimic the flow of control
* Tested in all modes.