Major improvements to game logic

Changes:
- Rewrote movement/merging logic to not be completely broken
- Unit tests for movement/merging logic
- Fixed a race condition in the view where the view state was being updated after animations ran
- Sample game actually runs now