Instrument the solvers to collect internal stats
Merge branch 'feature/stats' into develop
Configure logging at root project level
Add some logging statements
Extract logic for periodic listener
Add getDefaultFrequency() for subclasses to override
Add a listener to log internal stats
Fix failing tests
Change default log level
Merge branch 'feature/logging' into develop
Bump version to 0.11.1-SNAPSHOT for next release
Modest performance improvement

Exploits that it is faster to use identity-based lookups instead of equals() based lookups.
Merge branch 'feature/perf' into develop
Implement age-order constraints
Periodically preempt constraint checker

When starting from a random initial solution, it may be difficult to
find any solution that satisfies the constraints checker. At high temps
we will generate several potential solutions trying to satisfy the
constraints but will eventually choose a potential solution to score
even if it doesn’t satisfy the constraints just so the algorithm can
make progress. At low temps, we will spin until we find a solution that
satisfies the constraints.
Extract some constants
Change ‘Throughput’ to ‘Scored’ so it describes what is actually being printed
Enable age constraints in examples
Extract configuration constants
Merge branch 'constraints/ages' into develop