[1/3] Start a rexi_server per remote node

This is part of a multi-release upgrade to switch to using a rexi_server
instance per remote node. The first commit introduces the new
rexi_server instances, the second switches to using the new instances
and the third will remove the singleton rexi_server. Each of these
commits should be in a separate release.

The new pattern introduced by this commit will start a 'rexi_server_%b'
process where the '%b' is replaced by the `erlang:phash2(Node)` for
which it will service requests. After the second commit is release each
rexi generated message will be sent to the rexi_server instance on the
remote node handling requests for the local node. The
`rexi_utils:server_pid/1` function is used to generate the id of the
remote server.
[2/3] Start a rexi_server per remote node

Switch sending rexi messages to the rexi_server handling requests for
the local node. This replaces the use of the singleton rexi_server
process with a rexi_server instance for each node.

The only slight gotchya in the switch is that we need to send kill
messages to both the per-node and singleton instances during the
transition because we can't tell which process may have generated the
job. The extra kill message will be removed in the next commit.
Add a temporary feature flag for server-per-node
Use the unadulterated node name in server name

BugzID: 18215
Start per-node servers regardless of feature flag

Previously rexi_server_mon would fail to start per-node servers on a
node where the use of those servers in rexi:cast messages was disabled
by the "server_per_node" feature flag.  This mostly defeats the purpose
of the feature flag, which is to ensure that we can start all the
per-node servers before we try to use them.  Moreover, it cluttered up
the error logs because rexi_server_mon would crash after trying to
execute a `start_child` on rexi_server.

The fix is not DRY but it does the job well.

BugzID: 18970
Handle rexi-tagged messages

BugzID: 20204
Tag all replies to the coordinator

BugzID: 20204
Use '$initial_call' instead of initial_call

BugzID: 18742
Implement new streaming APIs

This adds new functions that are used by coordinators and workers to
negotiate an RPC stream. A stream is simply any response that requires
multiple messages from the worker.

BugzId: 22729
Exit with timeout instead of returning an atom

Every function that called `rexi:stream/1` had to check the return value
for timeout and would then call `erlang:exit/1` if that atom were
returned. Rather than force every function to make this check this just
calls exit in `rexi:stream/1`. Its possible to catch this if a process
ever happens to require it.

BugzId: 22729
Allow callbacks to update their list of workers

We need this to be able to allow coordinators to replace nodes that are
in maintenance mode.

BugzId: 22729
Implement new stream2 API

This embeds the stream_init/1 logic into the stream functions so that we
don't have to maintain the logic for inititalizing the stream for all
clients.

BugzId: 24635
Remove old code_change, set module version to 1
Rejigger the governor implementation

Previously we'd spawn a number of processes to send messages to
'noconnect' / 'nosuspend' nodes.  Now we're buffering the messages that
need to be sent directly in each governor and sending them one at a
time.  This prevents the net_kernel from tipping over in the noconnect
case.  We also decide whether to drop messages based on memory
consumption in the node instead of process limits (since we're not
spawning anymore).

BugzID: 23717
BugzID: 23718
Start a supervised rexi_governor per node

This generalizes rexi_server_mon to start per-node versions of a server
specified by a child module.

BugzID: 23717
BugzID: 23718
Remove gov_manager from supervision

We'll remove the module itself in a subsequent release.
Try to start per-node servers immediately

I can't think of a good reason not to do this.
Don't block the governor to send a message

This allows the governor to continue prioritizing incoming requests
instead of hanging for several seconds to try to connect to the remote
node.

BugzID: 23717
BugzID: 23718
Rename governor to buffer

Buffer describes the behavior quite a bit better than governor.

BugzId: 23717
BugzId: 23718
Revert "Tag all replies to the coordinator"

Not all rexi communication happens through `rexi_utils:recv/6`. We'll
need to audit all of our apps to see anywhere that doesn't to update to
the new message format.

This reverts commit 2f967906730eedf5851752be06155fc49edd28a1.