OrderedGraph and friends proposed structure

OrderedGraph has been discussed quite a bit in #980 and this PR is based on that discussion.
The topic of Graphs which track node order has also been discussed in #1181, #1244, #1267, #1267 

This implementation includes examples (in docs and in tests) for 1) ordered nodes, 2) ordered nodes and edges and 3) thin (low RAM) graphs that don't need edge attributes [not related to ordered nodes].

This code structure is likely NOT to be the structure implemented in NetworkX 2.0 for alternate data structures if that version includes alternate data structures.  The reason is that this structure requires the data structure to have a 3-layer structure (dictlike-of-dictlike-of-dictlike) which is not desirable for some other data structures. 

It may be useful for people who wish OrderedGraph or ThinGraph and don't want to wait for 2.0