Error Handling for Publish

Add some extended error handling to the Publish method.  Catches all
exceptions (not just TimeoutException), and raises Event on Service to
calling code can catch the errors for logging/debugging (in a central
location, so try/catches don't have to be scattered everywhere Publish
is called, and subsequent servers can be published to within the Publish
method itself).  The Nvent to be published is also included in the
EventArgs (along with the Exception and a string of the destination, for
logging/debugging purposes), so could be re-Published if desired.