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.
Devs, what you think to reducing visibility of this class, since only builder can see this? There is no reason to expose this class to the world.