Feature lattice

Implementation includes
- class LatticeNode: represents a single node of a lattice,
- class Lattice: describes a Bravais lattice (stores references to lattice nodes),
- factory routines for creating specific lattices (for convenience).
I would advise against using the obfuscated private naming. using a single `_` is enough for people to convey the message that this method is **touch at your own risk**. It is also not really making the methods private since it can be easily decoded(https://docs.python.org/release/2.7.8/tutorial/classes.html?highlight=private%20methods#private-variables-and-class-local-references). The same goes for attributes, an attribute with `_` should be respected as private to the class. In short it is very rare that I have seen the `__` naming convention in python.