Vertex facet concept introduced.

A whole lot of generics are now replaced by a single Facet class - it
accesses Vertex metadata in a typesafe way and separates data used by
different algorithms.