make EbpfTracker.dead go-routine-safe and .stop() idempotent
make EbpfTracker.dead go-routine-safe and .stop() idempotent

Without synchronisation, the isDead() call might return a stale value,
delaying deadness detection potentially indefinitely.

Without the guards / idempotence in .stop(), invoking stop() more than
once could cause a panic, since tracer.Stop() closes a channel (which
panics on a closed channel). Multiple stop() invocations are rare, but
not impossible.

kinvolk/scope,kinvolk/scope,alban/scope,weaveworks/scope,kinvolk/scope,weaveworks/scope,kinvolk/scope,alban/scope,weaveworks/scope,alban/scope,alban/scope,kinvolk/scope,alban/scope,weaveworks/scope,weaveworks/scope,kinvolk/scope,weaveworks/scope,alban/scope