Move all protocol definitions to protocol/*.h and keep only
definitions related to our implementation as *.h in the top directory.
Also, remove some header files to reduce header file proliferation.
we now have a nice structure for dispatching log messages to various
handlers, each self-contained. As an added benefit, we remove the need
to manually enable all the various log codes, as we simply auto-generate
the default config from all the message types we support.
Furthermore, we reduce computational complexity by avoiding linear
iteration over the array of registered log handlers.