Returns a list value consisting
of the elements of list in the opposite order. This is fairly
efficient because it just swaps the pointers around.
In scalar context, the function concatenates all the elements of list
together and returns the reverse of that, character by character.