cpoll: re-read EventHandlerData::op during repeat

this fixes a serious cpoll bug where if the following conditions are met
during a callback invocation:
* the callback function initiates a new cpoll asynchronous operation
with the same event type (EPOLLIN vs EPOLLOUT) as the old event (the
event that caused the original callback invocation)
* the new operation type (op) is different from the old
* the new operation is marked as "repeat"
then the old operation type (op) will be dispatched, passing garbage to
the system call

for example,
File f;
//...
f.write(..., cb1);

void cb1(int) {
  f.repeatSend(..., cb2);
}
void cb2(int) {
  //...
}

when cb1 returns, cpoll will end up dispatching another write() instead
of a send()
cppsp: proper error handling, avoid stack overflow when receiving large pipelined requests

* fixed a memory leak in the event of an error condition
* unwind the stack when reading subsequent requests