Fix: incorrect condition for popping state
Refactor: added some assertions
Fixed assertion failure
Fix: added parentheses to #defines that need them
Fixes and redesign of GENERATOR

- Fix: made separation of choice rounds explicit
- Fix: supply action of last round when legal_actions.count == 0
- ChoiceTree's choices is now 2D vector of [round*PLAYER_COUNT + player]
- GameTree simplified; no longer needs choices param.
Refactor: renamed variable
Refactor: take in max_rounds instead of max_depth
Added test of generator subsystem

Run for small amount of rounds without crashing
Refactor: used vector instead of static array in GameTree
Refactor: pass GameState by reference to successor ctor
Refactor: use vector instead of Action array
Refactor: Use vector.at() instead of []