Adding support for Download builder

Closes #789. As discussed in dev mailing list and under issue #789.

I don't know if we use all builder subclasses as inner classes or external classes. Ideas?

After all comments, I can write some docs and improve tests for bytearray and inputstream.
There are some places in our code that creates tmpfile, and we can use this rule to remove all files after test finish. This rule is awesome.