fixed #3 - use stream to create .depends.js files

*  Changed wrap_client_dependency to use a stream.
*  Learnt the value of pause() and resume() for piping.
*  Added throw_errors to step so we do not have to throw the error
returned every step
* Added step.drain(stream, data) to easily drain a stream and call-back
when done. Stream.write is unusual in that it can be synchronous or
asynchronous.
* Added step.pipe(input_stream, output_stream) to continue to the next
step once input is drained. Output is left open.