Split random_choose into by-value and by-reference versions.

random_choose() now returns an argument by value, avoiding the overhead
of constructing reference_wrappers for simple value types.  The call-by-
reference version still exists as random_choose_ref(), currently unused.
Maybe a non-const version of that would be useful at some point.

This lets us eliminate the overload for const char *, since an array
passed by value already decays to a pointer.