app: fix some bugs in LogListener

1. copy the slice of listeners to prevent data races
2. stop sending on the channel when listener is closed
provision/docker: prevent nil pointer dereference on error stream

Original failure, on production environment:

panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xb code=0x1 addr=0x20 pc=0x47c534]

goroutine 36749 [running]:
fmt.Fprintf(0x0, 0x0, 0x94a070, 0x16, 0x7f9286b11f88, ...)
        /var/lib/jenkins/go/src/pkg/fmt/print.go:220 +0xa4
github.com/fsouza/go-dockerclient.func·002()
        /var/lib/jenkins/jobs/tsuru-server/workspace/src/github.com/fsouza/go-dockerclient/client.go:178 +0x19b
created by github.com/fsouza/go-dockerclient.(*Client).hijack
        /var/lib/jenkins/jobs/tsuru-server/workspace/src/github.com/fsouza/go-dockerclient/client.go:180 +0x4ac

goroutine 1 [IO wait]:
net.runtime_pollWait(0x7f9286b3e018, 0x72, 0x0)
        /var/lib/jenkins/go/src/pkg/runtime/netpoll.goc:116 +0x6a
net.(*pollDesc).Wait(0xc2100e8b30, 0x72, 0x7f9286b3d030, 0xb)
        /var/lib/jenkins/go/src/pkg/net/fd_poll_runtime.go:74 +0x34
net.(*pollDesc).WaitRead(0xc2100e8b30, 0xb, 0x7f9286b3d030)
        /var/lib/jenkins/go/src/pkg/net/fd_poll_runtime.go:79 +0x30
net.(*netFD).accept(0xc2100e8ab0, 0x9ed730, 0x0, 0x7f9286b3d030, 0xb)
        /var/panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xb code=0x1 addr=0x20 pc=0x47c534]

goroutine 91707 [running]:
fmt.Fprintf(0x0, 0x0, 0x94a070, 0x16, 0x7fd878859f88, ...)
        /var/lib/jenkins/go/src/pkg/fmt/print.go:220 +0xa4
github.com/fsouza/go-dockerclient.func·002()
        /var/lib/jenkins/jobs/tsuru-server/workspace/src/github.com/fsouza/go-dockerclient/client.go:178 +0x19b
created by github.com/fsouza/go-dockerclient.(*Client).hijack
        /var/lib/jenkins/jobs/tsuru-server/workspace/src/github.com/fsouza/go-dockerclient/client.go:180 +0x4ac