(PUP-3750) Support :include: in mailalias type

The mailalias type does not allow the specification of included files,
which contain an alias's elements. Such alias entries are commonly
specified in the an MTA's aliases file through the following syntax.

aliasname: :include: /path/to/file

Specifying the rest of an ":include:" line as a recipient does not
work, because the existing mailalias type will quote the entry.

This change adds a new parameter named "file" to the mailalias type,
which allows the indirect specification of a file containing the
recipients.  The parameter parses and generates ":include:" alias entries.
@dspinellis actually the validation was fine.

I had questions about the `def should`. It really shouldn't be necessary unless your property has very special requirements. For example, the ssh_authorized_key type defines a `target` property whose [should](https://github.com/puppetlabs/puppet/blob/master/lib/puppet/type/ssh_authorized_key.rb#L85-L95) value depends on the `user` whose ssh authorized_keys are being managed.