Refactored after working with Mary
Switched overlaps calculations from Counters to numpy arrays
Separated make_flat_matrix into its own function for better profiling
Moved 'best_solution' update into config.anneal loop
Merged changes from commit ecf393
Added 'print_final_metrics'
All tests pass
Preparing for merge with best-time
Merge branch 'best-time'. Pull in minor improvements and move away from array-based approach.