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.
Merge pull request #28 from GuiForget/update-protocol

Update Protocol interface