update wrapper handling

Instead of returning a string, wrapper can now return an object with `{prefix, suffix, data}` properties (all optional). This allows for more efficient construction of SourceMaps (eliminates use of `String.indexOf()` on file-length strings). Remains backward compatible with wrapper functions that return a string. Built-in wrapper definitions changed to use object syntax.