Adds a rewritten upgrade_through_versions test.

This version removes all thrift code.
This adds the ability to keep the ccm cluster data after test completion.
This adds the ability to filter out errors from the logs that are acceptable
for the given test.