Argproc enhancements

This includes two enhancements to make arg processing more general:

1. The required attribute of an argument should be settable by calling code.  This allows plugins to modify this attribute.
2. Move the URI argument processing out to an event handler.  This allows plugins to leverage this code by firing an event.

This also pulls in the latest changes from develop with respect to parameter error message handler so there's some additional cleanup code as part of this PR to get all the tests passing.