Please take a look, Russell: I think I got everything, but obs_sdss doesn't have its own makeVisitInfo(), and I wasn't sure what to do about obs_test.
1. is it ok that we're faking ERA (and by extension LST and HA) in this manner?
2. Should I have better tests for afw::getBoresightHourAngle(), afw::getLocalEra() and particularly obs_base.eraFromLstAndLongitude()?
3. Is the approximate calculation I'm using for lsstSim good enough? It doesn't include refraction correction, but it should be relatively close given that we don't want to do the UT1 calculation.
4. Should I manually rewrap LST, HA, and ERA, or leave that to the users (e.g. ERA is not wrapped on output in VisitInfo::write: is it expected to be wrapped when set)?
5. Did I miss any obs packages or aspects of the obs packages I got?