Work around Go issue #7358

This is the issue in question:

    http://code.google.com/p/go/issues/detail?id=7358

An excerpt with the relevant details:

> Attached is a program that defines a simple data structure
>
>     type Test struct {
>         t *Test
>     }
>
> Objects of type test are created with a finalizer and in a way that t always
> points to them. The attached program creates a couple of Test structs and
> sends them over a channel to ensure that they are not allocated on the stack.
> I expected that the finalizers are being run as Test only points to itself.
>
> Actually, the garbage collector does not free any of the Test structs. This
> looks like as if it was within a possible interpretation of the documentation
> for runtime.SetFinalizer().
>
> I request that the behavior be changend so that finalizers are being run when
> there are only finalizer cycles of length 1 (i.e. a struct points to itself).
> I'm unsure if this is a bug or a feature request.

The attached program:

> package main
>
> import "fmt"
> import "runtime"
>
> type Test struct {
>     t *Test
>     id int
> }
>
> func main() {
>     id := 0
>     c := make(chan *Test,256)
>
>     go acceptor(c)
>
>     for {
>         t := &Test{nil, id}
>         t.t = t
>
>         runtime.SetFinalizer(t, testFinalizer)
>         c <- t
>
>         runtime.Gosched()
>     }
> }
>
> func acceptor(t <-chan *Test) {
>     for {
>         _, ok := <-t
>         if !ok {
>             return
>         }
>     }
> }
>
> func testFinalizer(t *Test) {
>     fmt.Println(t.id)
> }
Implement bindings for the type MifareDESFireKey