Update Protocol interface

Protocol instance could need access to the already known metadata. To
that effect, I updated the interface to receive the metadata along with
the URL to fetch.
I'd probably keep the iteration on the metadata entries as we might want to prefix them with e.g. 'fetch-' as we do for the parsing I think. The use of this prefix would be configurable.