Full support for natural IDs.

Graph configuration supports enabling natural IDs,
When true, the graph supports maintaining natural IDs,

This feature hides the internal elements ID and maintain an ID as a property.
If enabled, all methods for retreving/storing graph elements supports the natural ID.

Enabling natural IDs is enabled if:
Configuration:useNaturalIds - if true, natural IDs are used.
Configuration:useNaturalIdsOnlyIfSuppliedIdsAreIgnored - if true, natural IDs feature is used
only if the underline graph ignores supplied ids.

When storing new elements, if ID is not specified, the default generated IDs are UUID based,
It is possible to specicify ID Factory for Vertices / Edges to generate other type of IDs.

Fixes #7