Back to map_values.

* map_values now takes an input and output argument. Both should be
  containers that work with the for-range loop and provide
  insert(iterator, value) and end() member functions.
* select_values and reject_values added; both work similarly.
* In all three cases, input and output parameters must be distinct
  references. Can't use 'restrict' for this, so it'll throw an exception
  if their addresses are the same.