Complain when file/http param resource does not exist

If a user provides an arg via file://, http://, https://
and that resource does not exist, we should immediately stop
and let them know they're specifying a resource that does not
exist.  Otherwise the user will generally get an error message
further downstream that makes it harder to troubleshoot.  Since
most of these file params are used for complex types, this generally
happens in the json parsing and/or the arg shorthand processing.

Note: The diff makes it look like a rewrite, but all I did was move the
`get_paramfile` to the top of the file and make some changes to
`get_file/get_uri` to raise exceptions where appropriate.

Error messages look like this (there are unit tests that verify the
error message btw):

```
$ aws ec2 describe-instances --filters file://does/not/exist.json
Bad value for argument '--filters': file does not exist: does/not/exist.json
```

cc @garnaat @toastdriven @danielgtaylor