Implement IEnumerable<Tile> on the Board class

This allows Board instances to be used directly in a foreach instead of
going through GetAllTiles.
Add functions to traverse the board in groups

Tiles can be grouped by row or column. The tests here are a little more
complicated than I would normally prefer, but they cover the full
traversal order.