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
Event structure is pretty small and doesn't contain any pointers, so it is preferable to pass it as a value to reduce garbage collector work, compiler also is pretty smart to use "copy-on-write" technique.