Added legal move abstraction layer. TODO: Clean up code, implement bot support