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.
And reduce visibility of these classes, since users should use `of` methods to create instances.