Switched from Set to Deque in Pile, which generated quite a few changes. Also implemented assertMove in Canfield