Ticket #47808 - If be_txn plugin fails in ldbm_back_add, adding entry is double freed.

Bug description: Backend add ldbm_back_add frees the entry to be added,
if the add fails in the be_txn plugins.  But the frontend releases the
entry when an error is returned from the backend.

Fix desxription: When the entry is freed in the backend, set NULL to
the pblock SLAPI_ADD_ENTRY to tell the frontend not to free the entry.

https://fedorahosted.org/389/ticket/47808

Reviewed by mreynolds@redhat.com (Thank you, Mark!!)
Ticket 47313 - CI test: add test case for ticket 47313

Bug Description: Indexed search with filter containing '&' and "!"
                 with attribute subtypes gives wrong result

Test Description:
  The test case is to
    - add 2 entries
      entry_1
         cn: <val_1>
         cn;en: <en_val>
         cn;fr: <fr_val>
      entry_2
         cn: <val_2>
         cn;en: <en_val>
    - search with filters
      1. (&(sn=sn_val)(!(cn=<fr_val>)))
         expect result: entry_2
      2. (&(sn=sn_val)(!(cn;fr=<fr_val>)))
         expect result: entry_2
      3. (&(sn=sn_val)(!(cn;en=<en_val>)))
         expect result: none
    - delete the 2 entries

    https://fedorahosted.org/389/ticket/47313
Ticket 47752 - Don't add unhashed password mod if we don't have an unhashed value

When performing a modify operation to replace the userpassword with a pre-hashed
value, the modify code adds a LDAPMod that replaces the "unhashed#user#password"
attribute with no values. While this doesn't cause any harm inside DS itself, it
is not the correct behavior. We should only add a LDAPMod for the unhashed password
if we actually have an unhashed value available.

https://fedorahosted.org/389/ticket/47752

Reviewed by mreynold@redhat.com
Ticket 47753 - Add switch to disable pre-hashed password checking

By default, 389 DS doesn't allow pre-hashed passwords to be set by
anyone other than Directory Manager. This privilege can be delegated
to other users by adding them to the Password Administrators group.
This works fine for most cases, but there are cases where one might
want to allow anyone to set pre-hashed passwords. An example is the
FreeIPA project, who has their own SLAPI plug-in that controls
pre-hashed password checking. We should add a switch to completely
disable pre-hashed password checking to support this case.

https://fedorahosted.org/389/ticket/47753

Reviewed by mreynolds@redhat.com
Ticket 47808 - CI test: add test case for ticket 47808

Bug Description: If be_txn plugin fails in ldbm_back_add, adding entry
                 is double freed.

Test Description:
  It enables attribute uniqueness plugin with sn as a unique attribute
  Add an entry 1 with sn = ENTRY_NAME
  Add an entry 2 with sn = ENTRY_NAME
  If the second add does not crash the server and the following search
  found none, the bug is fixed.

https://fedorahosted.org/389/ticket/47808
Ticket 47813 - managed entry plugin fails to update member
 pointer on modrdn operation

Bug Description:  A modrdn on an existing managed entry failed to update
                  the entry pointer becuase part of the update is to add
                  the managed entry objectclass - which already exists
                  in the managed entry.  This caused the new pointer value
                  to not be added to the managed entry.

Fix Description:  During a modrdn operation perform the objectclass addition
                  in a separate operation, as we don't know if the entry
                  already has the objectclass or not.

https://fedorahosted.org/389/ticket/47813

TET: passed
Jenkins: passed

Reviewed by: rmeggins(Thanks!)