(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
Maybe something like

```ruby
def expanded_absolute_path?(path)
  begin
    absolute_path?(File.expand_path(path))
  rescue
    false # or maybe raise the error so the type can catch it and fail cleanly?
  end
end
```