LambdaVolumePeriodic (and tests)

Resolves #27.

After discussion with @jhprinz, we decided on the following behavior: 
* if you don't provide a periodic domain, we don't assume one, but use the choice that lambda_min > lambda_max to tell us to use a state that wraps around the boundary.
* if you do provide a periodic domain, we force everything to be wrapped into that domain: order parameter and lambda_min/max (with the two exceptions that follow)
* if you provide a periodic domain and the difference between lambda_max and lambda_min is larger than that range, we raise an error (this could either be interpreted as desiring all space or you wanting to first wrap lambda_min/max to the domain, and taking the resulting subset)
* if you provide a periodic domain and lambda_min-lambda_max is equal to the range of that domain, then we assume you want the whole domain to be allowed.