I currently have implemented it with minimal changes to the engine (layout.js and glwrap.js) - literally 10 lines of code combined. I can now define a layer, call it "sampler<something>" (eg. samplerDepth) and set "Force own texture" to true.
This combination makes my code kick in, it bypasses the usual force own texture (keeping this.render_offscreen at false) and creates one in the runtime instead (this.runtime[this.name] rather than this.runtime.layer_tex). With a slight change in the glwrap.js, it then binds a texture based on a parameter name.
With that I have successfully created rendertargets with minimal overhead.
In the screenshots, I implemented a depthbuffer. The red block means obstacle, so my shader will pick that up and not render light on it in the final in-game picture.
In-editor:
<img src="https://dl.dropboxusercontent.com/u/4832900/Construct%202/In-editor.png" border="0" />
In-game:
<img src="https://dl.dropboxusercontent.com/u/4832900/Construct%202/In-game.png" border="0" />
This is also very useful for normal mapping and specular mapping, as you can now query multiple layers for information (pretty much like a GBuffer in a deferred renderer).