Optimization

Added a computer player that can play optimally according to a rule set.
Further structural updates.