pure virtual History + SqliteHistory implementation
FIX: private history inheritance
add Tag::operator >
TEST: MockHistory scaffold
Implement MockHistory using STL
TEST: test SqliteHistory and MockHistory with T_History
FIX: predictable usage of Prng
TEST: add T_History::GetHashesWithDuplicates
strongly type hash suffix
Merge pull request #607 from reneme/feature-mock_history

Feature: Add a MockHistory in the Unit Test Suite

This adds a MockHistory class in the unit test suite to run both the CatalogTraversal and the GarbageCollection tests independent from the SQLite based SqliteHistory class. Both SqliteHistory and MockHistory inherit from the abstract class History that only contains pure virtual methods. This adds virtual method calls in the production code path, however since SqliteHistory deals with an SQLite database behind the scenes it is not considered to be a significant performance drawback.

The MockHistory class is entirely based on STL and fulfils the exact same unit test set as its production counterpart SqliteHistory. Therefore I consider it a fully interchangeable mock speeding up the corresponding tests by three orders of magnitude (!).