Added a RANGE argument to I.wrap

- Save mark with movemnet to start or end of buffer
- Rewrote with_region to use I.wrap's new RANGE arg
- Enhanced I.wrap so that our special arguments are allowed to return
  more than one argument in which case all the other args are pushed
  down accordingingly. Right now RANGE is the only arg that uses this
  functionality:

      I.wrap(E.copy, E.RANGE, arg)

  This will expand out to: E.copy(beg, end_, arg)