This patch fixes some subtle interactions between SLAPI and syncrepl. Due to
SLAPI always assigning connection and operation IDs of zero for internal operations, such operations would cause a stale contextCSN to be returned from slap_get_commit_csn(). As a result, SLAPI internal updates would be invisible to replicas until an external update was made. Also, SLAPI internal operations never called slap_graduate_commit_csn() which leaked pending CSNs. Also included in this patch is a general cleanup of some of the SLAPI code. Note that we need to use a separate mutex on conn_nextid to avoid a deadlock where a post-operation plugin tries to acquire connections_mutex, having locked the per-connection mutex, while the listener thread tries to acquire the per-connection mutex (having locked connections_mutex). connection.c needs to be fixed to acquire mutexes in the same order.