Separate channel to tell WatchHealthResults to stop

mainLoop panic: runtime error: send on closed channel
goroutine 16 [running]:
main.recoverAndLog(0x6f5f30, 0x8)
    /tmp/tmp.FPkZjUwcGw/riemann-consul-receiver/utils.go:20 +0x189
runtime.panic(0x689b20, 0x9d96fe)
    /usr/lib/golang/src/pkg/runtime/panic.c:248 +0x106
main.mainLoop(0xc21000f1e0, 0xc2100262d0, 0x7ffff23d3f51, 0x1e, 0x15b3, ...)
    /tmp/tmp.FPkZjUwcGw/riemann-consul-receiver/main.go:169 +0x769
created by main.main
    /tmp/tmp.FPkZjUwcGw/riemann-consul-receiver/main.go:290 +0x121a
Capture panic output to log file

Which makes it no longer JSON, but better than losing the output, I
guess.
Fix incorrect variable for prog
Remove extra success/failure calls

Causes incorrect output; daemon and killproc take care of these
Closing a channel is not a blocking operation

At least that's how it appears.  Without these, the tests would fail
randomly because the tests' reads after the close would happen before
the close had been propogated to the goroutine.

I think.
Don't explode if no service found for a check result

This unlikely behavior was actually observed.  Need to make it more
performant (next commit, hopefully), as the current state will result
in two Service lookups for every missing service.
Limit calls to retrieve services

Uglier code, but kinder to the Consul agent.
Ensure panics go where logs are written

This will corrupt the JSON output, but at least we'll have the data.
Hopefully it doesn't happen often… :-)