bug 322 allow CLONE PREPARE processing to deal with an earlier STORE PATH

If a node sees a STORE PATH  event before it sees the CLONE PREPARE
that creates a node involved in that path then the CLONE PREPARE
event was failing because the node was already in sl_node.

Check for the existance for rows and update them instead

Conflicts:
	src/slon/remote_worker.c
Additional changes for bug322.

cloneNodePrepare() and many other places need to grab
the central config lock. They heavily rely on checking
things via "not found", which inherently has a race
condition.

Conflicts:
	src/slon/remote_worker.c
note: removed src/slon/remote_worker.c changes from
the cherry-picked patch they aren't actually part of 322
From fccfb06687588c6155f0f77665be358837dd47e1 Mon Sep 17 00:00:00 2001
From: Steve Singer <ssinger@ca.afilias.info>
Date: Thu, 24 Oct 2013 21:29:32 -0400
Subject: [PATCH] fixing the failover unit test.

It is sometimes possible for node 4 to get unsubscribed from
set 1 because it doesn't have a subscription to set 2 but
might be the farthest ahead node (but it isn't a failover candidate)

Resubscribed node 4 before continuing on with the next test
Disable the "not expect lag" check from disorder ExecuteScript.
"Apparent" lag of 10 seconds can happen, the way confirm
messages propagate back to the origin.
add a regression test for EXECUTE SCRIPT using a non-provider event node
Fix for Bug 321

Bug 273 was fixed by no longer having the event provider
forced into the list of provider nodes. This caused bug
321 as a side effect slon is often adding then removing
(connecting and disconnecting) providers for nodes
that don't provide any real data.

A node that isn't an origin for a subscription still
might have rows in sl_log_script that need to be
processed.  We need to check some provider for
sl_log_script changes. Since the sl_listen network
for non-subscription providing nodes can have multiple
li_provider nodes for a given li_origin/li_receiver
we just make sure that ANY of those nodes is an estalished
provider.  We don't need it to be the event provider.

If the provider in the list is too far behind we abort
sync_event() pause and try again.  We also need to check
to see if the cluster configuration has been changed
by another worker during this time.
Merge branch 'test2-REL_2_2_1' into test-REL_2_2_1

Conflicts:
	src/slon/remote_worker.c