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.
am wondering whether there could be a case whereby there would be a field metadata but its content would be null, in which case we would not create the empty map.
[http://nathanmarz.github.io/storm/doc/backtype/storm/tuple/Tuple.html#contains(java.lang.String)] mentions that it contains the field but makes no guarantee as to what its value is.
What about replacing the else with a separate if and check that metadata is not null then create the empty map accordingly?