Hardened porpGib, added timeout functionality, etc.

* Changed code to use TaskCompletionSourceEx<object> to enable timeouts.
* Added timeout factory method to the Porp, thus enabling caller to add
the timeout at the time of configuring the porp.
* Added a started event to the porp info enum, PorpEvent, etc.
* Added serialization attributes to ibMethod, though this is not tested.