support listeners for events

Change adds two methods to client:

- AddEventListener adds a channel to receive *APIEvents
  If this is the first listener, event monitoring is started.
- RemoveEventListener causes a channel to no longer receive *APIEvents
  If this is the last listener, event monitoring is stopped.
correct logic error on disabling monitoring
fixed some race conditions
caught closed chanel
Merge branch 'master' of git://github.com/cheneydeng/go-dockerclient

Conflicts:
	testing/server.go
Merge remote-tracking branch 'fsouza/master' into develop
testing: added PrepareFailure which force a failure for some api calls
testing/server: fix WaitContainer

ops! x)
Merge branch 'events' of git://github.com/jhulten/go-dockerclient

Conflicts:
	testing/server.go
engine: fix go vet issues
event: add some docs and improve the channel handling
all: fix some golint warnings
Merge remote-tracking branch 'fsouza/master' into develop
update docker event