A grid graph implementation

Extend previous branch with GridGraph, a grid graph implementation, supporting O(1) access and a random access iterator interface.
typedef std::iterator<...> Base;
typedef typename Base::difference_type difference_type;
do this consistently everywhere in the code!