Adjusted PorpTracker behavior.

* Added FirstLegCompletionTask to be able to await after the porp has
arrived _and_ done whatever it will do on the first leg. This enables
the ability to do the manual return, which is what I need when porping
to/from Web API service.
* Removed individual failure events and added a
PorpEvent.ExceptionThrown. Adjusted behavior for this.
* Finally figured out 1ms porp timeout test's problems and fixed it. Now
it always pass/fails. The problem was that sometimes the completion task
would throw the timeout exception before the return task was awaited. So
the return task status was not faulted, it was waitingforactivation.
Moving the await methods in their own try..catch blocks ensured that
both were awaited. It's the small victories that matter eh.