Removed default LatticeArray constructor

It makes no sense to specify the LatticeArray with a defalt shape.
Added num_sites member variable.
Added wee comment on datum_ref functions.
Added some utility function prototypes to LatticeArray
Switched certain functions in LatticeArray so that now they're templated.
Made a few changes to LatticeArray declaration

Prefixed all vectors with std::, added block_shape to constructor, added
block_volume member variable.
Added constructor implementation for LatticeArray
Added copy constructor implementation.
Added destructor body
Added comment to copy constructor.
Refactored LatticeArray constructor to use more standard library functions
Added assignment operator overload.