Relations data type

The graph data type in the BGL is a container where a user defines a set of objects and indicates whether there are connections between said vertices. However, all connections between the objects within a graph are arbitrary, at least from the graph data type's point of view. This proposal is to implement an adaptor to the Graph data type based on an abstraction of relations. This adaptor will allow a user to define a condition that a pair of objects must satisfy in order to be connected.