Fix memory leak black hole

I was always suspicious of the way I cargo cult sprinkled __strong and
__unsafe_unretained casts to handle memory management, but Xcode and
Instruments acted like everything was dandy and that there were no leaks.
Finally, I had reason to figure it out properly, which resulted in this commit.

As @jballanc pointed out, ARC actually hampers this kind of low level code, but
this code uses the __bridge* escape hatches to force retains and releases as
necessary. I stayed with ARC because at this point, it's a hassle to be
non-ARC. If ARC gets to be too much of a hassle, we can switch to MRR or
whatever Apple calls the pre-ARC system.

This code:

    (__bridge id)CFBridgingRetain(x)

is a retain.

Likewise:

    CFBridgingRelease((__bridge CFTypeRef)x)

is a release.