Clean up program name handling in oenv

- Remove unused functions to access the program name and command line
  from oenv.
- Replace these with direct access to a ProgramContextInterface, and use
  that instead of the global program context instance in places where
  output_env_t is easily accessible.
- Replace some calls to ShortProgram() with an equivalent call in oenv
  for places where oenv is readily accessible.

Change-Id: I2e8bc8701b8217f51ed9936338e1e9c3c21bd8ba
Additional index group checks for selections

Now index groups provided to selections are checked more thoroughly, and
an error is given if a group references an atom index outside the
topology (or the maximum atom number in the absence of a topology).
Negative atom indices also trigger the same error.

Previously, such index groups were silently accepted (except for a
warning during reading for negative indices), and the out-of-range atoms
dropped from the selections.

Change-Id: Id7a024ed316920d9594454ae36f7b9bdd9a429fc