(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
What should happen when we use a path like `~/foo` - do we assume that it expands to the homedir of the user running puppet?