initial import
add a test program
add a breadth first search algorithm
add a README
use node_id typedef throughout

add some documentation
change node list to node map for faster access

If it's still too slow I can change it to a vector of nodes, but this is
easier and more flexible.

note:  In breadth first search I use the node id as an array index.
This can be dangerous if I ever add functionality to delete nodes.
change name edge_ to next_edge_
the nodes now maintain a list of the out edges

I had to change the way BreadthFirstSearch iterated over the edges.
It's actually a bit uglier now, but I think safer and more general.
count the number of edges seen

this is a cleaner way than using the bool start_

also count the number of nodes seen
use some features of c++11
remove unused Edge member next_edge_
use a few more c++11 features
add class to build 2d square lattice graph
add another meath of breadth first search

this uses the visitor concept
minor updates
Revert "use some features of c++11"

This reverts commit 39dacbe7249fa0e43be98cd3c2111fd9f8c89bda.

Conflicts:

	Makefile
	graph.hpp
Revert "use a few more c++11 features"

This reverts commit 763d29100659ad66152916f16069ee28c9bf0718.
remove c++11 features from the program
add support for in edges
use set instead of lists