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
Yes, and while it's a problem in facter because it will raise a full Ruby stack and interrupt Puppet, I think it's OK in Puppet because it returns the error without a stack and makes the resource fail:

```
$ puppet apply user_home.pp 
Notice: Compiled catalog for obadiah.bouyguesbox.fr in environment production in 0.12 seconds
Error: Parameter path failed on File[~foo/bas/test.txt]: Munging failed for value "~foo/bas/test.txt" in class path: user foo doesn't exist at /home/raphink/bas/puppet/user_home.pp:3
Wrapped exception:
Munging failed for value "~foo/bas/test.txt" in class path: user foo doesn't exist
```

or would you rather still catch this?