Broke boundary constructing function into left and right variants.

I did this because I had the revelation that I was being stupid because
in general the left and right boundaries will not be equal.
Built up more infinite chain testing infrastructure.
Fixed dumb bug in the definition of InfiniteChain.
Reverted a weird tweak I made in a constructor of OperatorSite.
Added fold markers to states.cpp
Added a couple more folds to chain.cpp
Added default values to the Infinite* generators.
Wrote a basic test of the infinite_chain code.
Now the energy is explicitly cached.
Now the InfiniteChain test sets optimizer failure to throw.
Modified infinite chain optimizer test to check energy before and after.
Added header declarations for the infinite operator fields.
Cosmetic: Deleted redundant newline
Deleted extraneous begin fold marker.
Cosmetic: Squashed a few lines in the infinite TI field generator.
Fixed random infinite operator boundaries to be real.

This is needed to ensure that the operator is
hermitian.
Added new test to check that the energy grows linearly for external field.
Created an InfiniteState class.
Added explicit inclusion of infinite_operators.hpp.
Deleted the redundant middles from the op/state field names.