(PUP-2626) Accept module paths in Puppet::Parser::Function.file()

Summary
---

This modifies the <code>file()</code> function to accept module paths (like the <code>template()</code> function) as well as fully qualified paths.

Example
---
with directory structure:
<pre>
/etc/puppet/modules/example
├── files
│   └──file.ext
├── manifests
│   └──init.pp
└── templates
    └──template.erb
</pre>

When the module path for files can be used instead of the absolute path:

<code>file('example/file.ext')</code> returns the same as <code>file('/etc/puppet/modules/example/files/file.ext')</code>.

This is supposed to be like how template does module paths, where: 

<code>template('example/template.erb')</code> returns the same as <code>template('/etc/puppet/modules/example/templates/template.erb')</code>

Why
---

This would make it possible for modules that use the <code>file()</code> function to be more portable, instead of being tied to a specific puppet server configuration.
Why not use Puppet::Util.absolute_path?(file) here? (since we have the utility and it does special things for windows, it makes me think there a reason for its existence).