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).
Here are key,values are added to self.data.  However, when currently used in Lattice's update_node, this presents a problem.  For example:
'''
node = lattice.get_node((0, 0, 0))
node.data[CUBA.LABEL] = "label"
lattice.update_node(node)
del node.data[CUBA.LABEL]
lattice.update_node(node)
'''