Allow customized metadata leaf decoding
MetadataMaterializer support custom leaf decoder

This allows the caller to supply their own leaf decoder, which will
then be in charge of translating the content of the url.