Changed ints to doubles to make math more accurate.
Changed VertexProvider and EdgeProvider API so that getVertices() and
getEdges() calls can always take a varargs list of Criteria objects so
that we can always use Criterias to manipulate the list of vertices and
edges that are returned by the providers. Also moved the Criteria storage
into the GraphContainer.