Make Grid::subset a subclass of std::vector<Cell *>

This allows us to reuse the vector iterator implementation.