Allow custom param values to be read from files/urls

The `no_paramfile` setting can be used to disable this. By default, all custom
parameters will support `file://`, `http://` and `https://` URI schemes, with
the possibility of more coming in the future.
Update tests to not mock __builtin__.open
Do not auto parse JSON based on filename
Update paramfile custom argument to use events

Instead of introducing a new preprocessing method this uses existing events
and migrates code out of CLIArgument and into CLIDriver, which now fires and
handles that event instead of individual arguments. Due to this, all
arguments now support loading from a paramfile via URI.
Refactor load-cli-arg common event code

Custom commands, custom arguments, and existing service operations from the
service model now all use the same logic to unpack CLI arguments. This adds
support for file:// and http:// URIs to all arguments unless no_paramfile
has been set.
Code review feedback

* Modified the load-cli-arg event to emit service and operation name instead
  of an operation object
* Cleaned up tests
* No longer access private members for BasicCommand during testing
Merge pull request #747 from danielgtaylor/custom-arg-paramfile

Allow custom param values to be read from files/urls. Fixes #747.