comms/MessageDispatcher: make `dispatch` Message param take an rvalue ref.
comms/Message{Handler,Dispatcher}: simpler msg. dispatching: fewer bugs.

Removed the message-body-storing code from the bodied `MessageHandler`
specialization and switched to a pass-by-value for the `shared_ptr` signal
parameter to compensate; that pointer's referand is now created (i.e., the
message-body is now allocated) in MessageDispatcher.tcc's `call_handler`
function.

Whatever reason caused me to write "NOTE than an attempt has been made..."
has, apparently, since been fixed.
tests/dispatcher-test:  simple MessageDispatcher test; to be extended.
comms/DataValue: always initialize value buffer.
comms/MessageDispatcher: added explicit assignment operator
util/SArray: fix possible memory leak in move-assignment operator.
comms/ModuleControl: handle `NULL` passed for module ptr. in constructor
comms/NodeServer: separated interface from impl., reworked thread mgmt.
comms/MessageDispatcher: fix for missing return in assn. op. (sa @0687420)
util/RefCountedObject: move add_ref & release funcs. into crisp::util

This fixes visibility issues that Clang suddenly decided should exist
because of some totally unrelated change elsewhere...
comms/BasicNode: possible partial fix for hang after node launch

See added comment.
src/CMakeLists.txt: added NodeServer source, missed in @7ad7cca
comms/BasicNode: more shutdown improvements re: deadlock-avoidance etc.

Avoid deadlocks within `run()` when that function calls `halt()` by using
block scope for the halt-mutex lock.  Also made some improvements to
related message output synchronization.
tests/live-test: include component IDs when printing received config
tests/live-test: print errors received in signal-wait handler.
comms/ModuleControl: better comments on `reset` and `value_for` methods
Merge branch 'dispatcher-fix'