[WIP] SampleSet first draft

Last week, @jhprinz and I talked about how to implement what we’re now calling `SampleSet`s (formerly `GlobalState`). The roadmap for including this is in 3 parts:

1. I draft an initial version
2. @jhprinz adds storage support for it
3. I replace the things that currently depend on GlobalState with this object.

This PR represents the first part of that. I'm still adding a few more tests (and will probably implement some more features), but this is enough the JHP should be able to work out the storage side of it (either once we merge this, or as by creating a PR to the dwhswenson/sample branch, which is generating this PR.)

See also https://github.com/choderalab/opentis/issues/90#issuecomment-65853021.