Do we really need to impose this requirement?  Why not use lazy requirements that fail at the point when (e.g.) `lat` is really needed, given that the sidereal time code only uses `lon`.

I would keep the `if lon is not None or lat is not None:` clause just for importing `Longitude` and `Latitude` if needed, but then do:
```
self.lon = None if (lon is None) else Longitude(lon, 'degree', wrap_angle='180d')
self.lat = None if (lat is None) else Latitude(lat, 'degree')
```
This is a rare case where I prefer using an extra set of parens to make the syntax more clear.