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
Come to think of it, it actually prevents other resources from being applied, so it should probably be caught and send a clean `Puppet::Error` instead.