Intercept goroutine exit

Since the Go runtime recycles G instances we need to intercept goroutine exit
so that we can clear mocking information - otherwise a new goroutine may
inherit the setting from the previous use of that same goroutine.

So now we clear the mocking information in runtime.goexit to prevent it being
reused if the G instance is recycled.