loaders: Add I/O abstraction and convert loaders.

This commit adds and abstract I/O interface and converts all image
loaders to use it. This is a big step towards better faster and nicer
containers (i.e. tar, tar.bz2, tar, etc...). It also allows you to read
images from memory or whatever else by implementing simple read() and
seek() wrappers.

It also updates loaders documentation, adds a few testcases and example
for loading images from a memory buffer.

BEWARE: The work is not finalized and only basically tested. The ZIP
        loader is a bit broken (seeking does not work correctly).
        (More tests and fixes will come soon)

Signed-off-by: Cyril Hrubis <metan@ucw.cz>