Add extractSource parameter

Allows the user to define where the extract comes from. If the value of this parameter
is a resource field name (including TVs if &includeTVs is set) then that resource
field is used for the extract. Otherwise the parameter is taken as the name of a
Snippet to run. The Snippet is passed the resource array as parameters. If there
is no Snippet by that name, then the extract will be empty.