Change {add,update,delete}_entry to take LDAPEntries

These methods currently take (dn, entry_attrs, normalize=True)
(or (dn, normalize=True) for delete).
Change them to also accept just an LDAPEntry, and document the
legacy calling style as such.

Part of the work for: https://fedorahosted.org/freeipa/ticket/2660
Remove unused imports from ipaserver/install

Part of the work for: https://fedorahosted.org/freeipa/ticket/2660
Remove unused bindcert and bindkey arguments to IPAdmin

Part of the work for: https://fedorahosted.org/freeipa/ticket/2660
Turn the LDAPError handler into a context manager

This has the advantage that the traceback is left intact if an error
other than LDAPError is raised.

Part of the work for: https://fedorahosted.org/freeipa/ticket/2660
Remove dbdir, binddn, bindpwd from IPAdmin

The dbdir logic was moved to replication.py, the only caller.
The binddn and bindpwd attributes were unused.

Part of the work for: https://fedorahosted.org/freeipa/ticket/2660
Remove IPAdmin.updateEntry calls from fix_replica_agreements

Part of the work for: https://fedorahosted.org/freeipa/ticket/2660
Remove IPAdmin.get_dns_sorted_by_length

A simple sort(key=len) is simpler both implementation-wise and
semantics-wise.

Part of the work for: https://fedorahosted.org/freeipa/ticket/2660
Replace IPAdmin.checkTask by replication.wait_for_task

The method was only used for waiting, not actual checking.

Part of the work for: https://fedorahosted.org/freeipa/ticket/2660
Introduce LDAPEntry.get_single for getting single-valued attributes

Part of the work for: https://fedorahosted.org/freeipa/ticket/2660
Remove special-casing for missing and single-valued attributes in LDAPUpdate._entry_to_entity
Replace entry.getValue by entry.get_single

Part of the work for: https://fedorahosted.org/freeipa/ticket/2660
Replace getList by a get_entries method

The find_entries method is cumbersome to use: it requires keyword arguments
for simple uses, and callers are tempted to ignore the 'truncated' flag
it returns.
Introduce a simpler method, get_entries, that returns the found
list directly, and raises an errors if the list is truncated.
Replace the getList method by get_entries.

Part of the work for: https://fedorahosted.org/freeipa/ticket/2660
Remove toTupleList and attrList from LDAPEntry

Part of the work for: https://fedorahosted.org/freeipa/ticket/2660
Rename LDAPConnection to LDAPClient

It does more than just connecting, so it should have more suitable
name.

Part of the work for: https://fedorahosted.org/freeipa/ticket/2660
Replace addEntry with add_entry

Part of the work for: https://fedorahosted.org/freeipa/ticket/2660
Replace deleteEntry with delete_entry

Part of the work for: https://fedorahosted.org/freeipa/ticket/2660
Fix typo and traceback suppression in replication.py
replace getEntry with get_entry (or get_entries if scope != SCOPE_BASE)

Part of the work for: https://fedorahosted.org/freeipa/ticket/2660
Inline inactivateEntry in its only caller

Part of the work for: https://fedorahosted.org/freeipa/ticket/2660
Inline waitForEntry in its only caller

Part of the work for: https://fedorahosted.org/freeipa/ticket/2660