Use nested (slave) HTTP requests for proxying

This gives more flexibility in how we handle the proxying, potentially
allowing to modify the content on the fly.
Add encryption support

This is configured by adding an "Encryption" key in the bucket config.
The encryption is done using AES, key can be 16, 24 or 32 characters
to choose between AES-128, AES-192 or AES-256. Any other key length
will trigger an error.