Initial seperation of how to get the values to be used in unmarshalling.

With the seperation into the ParamValueProvider func, we can give the ability
(and we will) to change how the values used in unmarshalling can be obtained.

Current default information of getting values from the QueryString+Form is
there, but no way to replace it with a custom implementation yet.

I foresee this as a way to allow other parts or modules to pass values,
maybe a module that does better URL parsing to provide values and keys
based of some matching of a url for example.
Changed ValueProvider function into an implementable interface.

This should allow people wishing to extend this part of sparkle with the
ability to allow there ParameterValueProviders to contain extra state.