Separate events subsystem

* Events subsystem merged from `server/events.go` and
  `utils/jsonmessagepublisher.go` and moved to `events/events.go`
* Only public interface for this subsystem is engine jobs
* There is two new engine jobs - `log_event` and `subscribers_count`
* There is auxiliary function `container.LogEvent` for logging events for
  containers
I'm wondering whether we want to leave the error handling to the client, or if we want to log to the daemon in case the `log_event` job failed. Since we never check for the error of LogEvent, I think we could internalize it here. WDYT?