Use a sibling file resource wrapped in a define

This approach sugested by joshcooper in #puppet-dev

    21:35 <+joshcooper> _rc: I wonder if you might be better off having
    your datacat type separate from the file type. Then create a defined
    type that creates file and datacat resources with that path, and
    then have the datacat type autorequire the file (so that the file
    will exist prior to your provider trying to manage it)...

    21:37 < _rc> joshcooper: but then I don't really get the file to do
    the heavy lifting for me; the unwritten code is going to set the
    content parameter from the evaluated template, so I was hping to
    have the file type just manage that, without adding an extra object
    into the catalog

    21:37 < _rc> but your way is simpler, I'll give it a whirl

    21:40 < _rc> so something like define datacat(...) {
    datacat_collector {...} file {...} } and the datacat_collector when
    it's evaluated reaches round the side and makes the content property
    of the file be the collected data
add in the template expansion

liberally cargo-culted from Puppet::Parser::TemplateWrapper and the template
function.
add a parser function to get the template_body and use that
Run a little more quietly

make template the property, and set loglevel => debug on the resource so we
supress output
Merge branch 'wrap_file_with_define'
pass all the useful file parameters through