Merge pull request #606 from bjori/SASL-broken

SASL QA fixes

* bjori/SASL-broken:
  CS
  Implement the interaction TODO (make them callbacks though)
  Duplicate the outload before its freed
  Pass correct length to sasl_decode64() to not make it mad in old versions
  Use the errorstring for that errorcode
  Do not overwrite the authdb, especially not when its $external buddy
  Improve SASL OK check to verify the other end actually finished too
  Avoid broken casting. error_message is always set on failure
  Return consistent error codes, and check for them
  out_payload isn't set on failure, but error_message is!
  Count the additional space before the dbname too
  Fixed PHP-996: Broken with cyrus-sals 2.1.23
  This will be free()d by mcon later, not PHP
Write the data to all 4 nodes

This test is testing wrong readPreferenceTags (e.g. not existing)
There is no need to be pretend the write may not have reached all nodes
and get lucky that it is on the dc:ny node.
In fact, this sometimes fails on travis as the write gets replicated
to dc:sf, dc:sf (and master dc:ny). When we then do
secondary reads & only dc:ny...
The secondary node dc:ny didn't get the write yet......

This fixes a random failure on Travis and Jenkins
Match any node type

These tests are simply testing if we spit out log entries.
It is not testing the inner workings of the ranking logic.
It is irrelevant if a server or two is lagging here, there is no
to enforce the primary to be the first server in the list here.
During ctor, all we care about is having a readable node, so the sort
is totally based on "lag", not type in this particular case.

This fixes these tests failing "randomly" on both Travis and Jenkins