Add and Initialize Graph in Neighborhood

Updated to use the simple graph found at interactivepython. Modified the graph to use a key value pair of block.location => Vertex(block) to make it easy to get a vertex and then check its connected nodes.
Does this add a two way edge?

If so, let's keep `add_edge` then make a func `add_strong_edge` or something which does the two way connection so we can have the ability for directed graphs later.