SocketManager: use aim_main in utest

This fixes registering the log structs so we can turn on trace logging during
the utest.
SocketManager: fix bug in timer utest

This assertion expects exactly one of the timers to fail to unregister.
Previously if the first timer failed to be unregistered then the OR would
short-circuit and the second unregistration would not occur. Replacing the OR
with XOR ensures no short circuiting and checks that exactly one unregister
failed.
SocketManager: internal support for human-readable event names

When debugging scheduling problems it's useful to know what events executed and
for how long. SocketManager currently only knows things like the fd, callback,
and cookie, which don't make for very readable log messages. It would be better
if the module registering a socket could name it e.g. "cxn 1.2.3.4:6653:2".

This commit adds name strings to sockets, timers, and tasks. I added the names
to log messages wherever possible, and added additional trace logs bracketing
callbacks. Right now the name strings are always generated internally in
SocketManager and so they don't have high level info. The next step is to
create an API to allow the calling module to supply the names.
SocketManager: add APIs to register events with names

The old APIs remain and become wrappers around the new ones.
OFConnectionManager: add names to timers
OFConnectionManager: add names to sockets
OFStateManager: add names to timers
OFStateManager: add names to tasks
OFConnectionManager: log when individual message processing takes more than 2x timeslice

The advantage of this log over the SocketManager one is that it knows the type
of the message.