Move ES6Transpile into preprocessor; allow multiple preprocessors in sequence

This streamlines the preprocessing logic so we can add caching later.
Use sourceURL to preserve paths, at least until we have source maps