Fix premature trace reset

If a child span finished (such as a client request happening inside of a
server request trace) the whole trace was being cleared. Thus, when the
parent span finally finished, all of the previous annotations were lost.

Instead, track annotations only by spanId and don't reset the whole
trace when a span finishes.

Test included which demonstrates the failure.