Added stub for SearchResultReference

Microsoft Active Directory returns these by default, and adding this
stub prevents choking.
Make it possible to specify local address for LDAP client

This adds an optional argument 'bindAddress' to the LDAPClientCreator.connect()
method. This argument is ultimately passed as-is to reactor.connectTCP to
specify the local address and port to use for the client connection.
Reroute errback to deferred returned by search()

The LDAPEntryWithClient.search() method used to send the LDAP request with
a call like
	self.client.send_multiResponse(... )
send_multiResponse() returns a deferred that was just discarded. If the
operation causes an error then the errback fired on the discarded deferred
will remain unhandled. The deferred returned by search() will then not
have any errback fired and the caller of search() will be waiting forever.

This change adds an errback to the deferred returned by send_multiResponse()
and has the error rerouted to the errback chain of the deferred returned by
search().
Extend test driver send_multiResponse() to return deferred and throw errors

The deferred returned by the LDAP client send_multiResponse() method was
previously unused in all code covered by tests, and so the replacement
method in the test driver just returned None. The deferred is now used
in search() and this change makes the test driver also return a deferred
instead of None in order to make things work when run within the test
framework.

To make it possible to test failures in the client send() and
send_multiResponse() methods, the test driver is changed to accept Failure
instances in place of lists of LDAPProtocolResponses.  Doing this causes
the errback on the deferred to be called with this failure.

The LDAPSyntaxSearch and Bind test cases are augmented with one test each
to use the new failure functionality in the client test driver. As the
search() code a while back did not handle errors in the send_multiResponse()
deferred chain the test case would time out if run against older code.
Therefore a smaller timeout of 3 seconds is set for the LDAPSyntaxSearch test
case.
Use hashlib and built-in set() instead of deprecated modules

Use hashlib instead of the deprecated sha module. To remain
compatible with Python 2.4, the old sha module is used if
hashlib cannot be imported.

Use the built-in set() type instead of the deprecated sets.Set().

[Anton: squashed several set() and hashlib fixes into one change
	and added the conditional sha import for Python 2.4
	compatibility. ]
Add instructions file.
Docstring fix
Update README

Use Markdown syntax for the readme and name it README.md accordingly.
Update the readme with current information and a simple usage
example. The info in INSTALL.txt is incorporated into the main readme
and INSTALL.txt is removed.

Conflicts:
	README
Fix dns import

twisted.protocols.dns was moved to twisted.names.dns long ago in
Twisted 2.0. There used to be a compatibility layer in
twisted.protocols.dns, but that was removed in Twisted 9.0.

https://bugs.launchpad.net/ubuntu/+source/ldaptor/+bug/881404
Handle additional records in DNS response

Instead of asserting that every DNS record returned for the SRV lookup is a
SRV record, just suppress printing other records. This is because DNS
servers do include additional records, such as A records for the resources
in the reply. Previously that would cause an ugly crash and traceback.
Remove GPL md4 and include PassLib's BSD version.

Code copied from PassLib (http://code.google.com/p/passlib/).

Modified the code slightly to include a copyright line in each file, fix
import paths, and to set md4.new() to call md4.md4() so existing code
didn't need to be changed.
purge webui from ldaptor
Update paths in documentation source files for compilation on newest Fedora.

Author: Jan Vcelak <jvcelak@redhat.com>
From 9ae91b2ba8d7d215e43b98ab37006b2271d20d7c Mon Sep 17 00:00:00 2001
From: davide colombo <dcolombo@davec.(none)>
Date: Fri, 18 Feb 2011 12:16:51 +0100
Subject: [PATCH] Fix deprecated exception error
From 43af9e185728ae3a006cbdea33d41f099f80c45f Mon Sep 17 00:00:00 2001
From: Edmund Jorgensen <tomheon@gmail.com>
Date: Tue, 22 May 2012 17:17:08 -0400
Subject: [PATCH] Fix typo in module name: pureldap -> pureber.
From f7440e50350710c0355f33d766f2ac10df8f5fd6 Mon Sep 17 00:00:00 2001
From: Adam Goodman <akgood@garglezomper7.local>
Date: Tue, 21 Jun 2011 16:04:22 -0400
Subject: [PATCH] added very basic, low-level support for SASL credentials in
 the pureldap module

When constructing an LDAPBindRequest, now you can pass 'sasl=True' to
indicate you're providing SASL, rather than plain, credentials. Then,
provide the 'auth' parameter as a tuple of (mechanism,
credentials). For example, if constructing a bind request for an
Active Directory server, you might do something like:

LDAPBindRequest(dn=..., auth=('GSS-SPNEGO', 'NTLMSSP...'), sasl=True)

(note that 'NTLMSSP' begins an NTLM Negotiate Message)

Also, when parsing server responses (e.g. LDAPBindResponse), the
serverSaslCreds field will be populated if appropriate.

None of this is exposed in the higher-level interfaces
(e.g. LDAPClient) yet.
Slightly modified version of the below patch by Adam.

From 9c6facce573820987f1ce591f5530e37422fff81 Mon Sep 17 00:00:00 2001
From: Adam Goodman <akgood@garglezomper7.local>
Date: Tue, 21 Jun 2011 16:09:40 -0400
Subject: [PATCH] fix starttls support

a small bug in the LDAPExtendedRequest constructor was making the
LDAPStartTLSRequest constructor fail
Subject: [PATCH] fix unicode problem with add contact
From f693f61d6b6a6a53044ad3e5f7a7967bfb95d118 Mon Sep 17 00:00:00 2001
From: davide colombo <dcolombo@davec.(none)>
Date: Fri, 18 Feb 2011 12:10:41 +0100
Added support for abandon request

Conflicts:
	ldaptor/test/test_pureldap.py
ignore nosetest temp files