(PUP-2867) Support ~ in file paths, allows to deploy to ~<user> directories

  Note: validation will let ~ pass, but munging will fail if the user
    does not exist since it calls File#expand_path
I think if you know the owner you want, it's easy enough to use

```puppet
file { 'some file':
  owner => $owner,
  path   => "~${owner}/some_file.txt",
}
```

and `~` should still refer to the user running Puppet, so you can actually deploy in your home directory when running Puppet to deploy, say, your dot files.