Remove some utility -> legacyheaders dependencies

- Use methods in programcontext.h and baseversion.h instead of
  copyrite.h within utility/.
- Replace one use of asize() with an alternative implementation that
  doesn't require an explicit array size.
- Don't pass the whole hw_opt structure to the OpenMP thread affinity
  check, when only a single field is ever accessed.
- Don't call md_print_warn() from gmx_omp_check_thread_affinity(), but
  provide the message to the caller so that they can print it.

For the last two, the rationale is that if this function needs to be in
a generic OpenMP wrapper (which makes sense, since it requires in-depth
information about the actual OpenMP library), then it shouldn't depend
on any mdrun-specific code.

Change-Id: Icc8f4026e4a2ce8e5d533a5bb88e5f3dddcc9a4a