Graph is capable of storing nothing at each vertex and edge

The vertex and edge types default to Sawyer::Nothing so that a graph declared
like this:

	typedef Sawyer::Container::Graph<> Graph;

has connectivity information but no data stored at the vertices and edges.
Documentation

Given
	Cache c;

then
	c = Nothing();
and
	c.set(Nothing());

are the same as:
	c.clear();
Command-line can use Optional<T>

For example:

Optional<int> i;
switches.insert(Switch("test")
                .argument("arg", nonNegativeIntegerParser(i)));
Added some additional GraphTraits
Initial implementation of graph traversals
BitVector API changed: "set" and "setValue"

The BitVector::set method no longer takes an optional Boolean value,
but rather always sets bits to true.  If you need to specify a Boolean
then use BitVector::setValue instead.

This is to make BitVector::set(int) unambiguous and less error
prone for users.  For example: bv.set(0) assigns true to bit number
zero; it does not clear all bits like it did before.
Version two of graph traversals

The first version turned out to be not flexible enough to
easily implement some important graph traversal algorithms,
so we have a new version now.  The main difference is the
addition of {Order}{Direction}GraphTraversal templates that
advance in smaller steps.