Partial (incomplete) implementation of pattern based solver
Realized that caching the empty tiles was not only messy, but also probably very error prone since the available values change for every tile placed. That caching would introduce more errors than it would fix.