Move overloads to op_overload<> where possible instead of hand-coding
Move value_producer to op.hh
Add op_yielding_overload

- This template class has a similar task as op_overload, except for
  operators that yield more than once.  Like with op_overload, operate
  gets the right number of accurately typed arguments, but instead of
  value, it returns a value producer.

  Overall it's a win line-count wise, and just as importantly, you
  only get to declare the operator prototype once when inheriting off
  this template.  The rest (get_selector, extracting arguments from
  the stack, etc.) is done automatically.
Mark throw_libdw and throw_elf as noreturn
Convert "child" overloads to op_yielding_overload
Convert "attribute" to op_yielding_overload
Convert "value" to op_yielding_overload
Documentation tweaks