Abstract BFS in GridModel

Breadth first search of connected cells in GridModel is abstracted, so that the actions that deal with connected cells can be specified in individual functions without repeating implementation of search.
No, it actually is a big deal, that's one of the ones in the style guide. Oops! Thanks for the catch.