Added `proxybase.py`, an LDAP proxy that is easier to hook into.

Overriding `handleBeforeForwardRequest()` allows you to inspect/alter requests
going to the proxied server.
Overriding `handleProxiedResponse()` allows you to inspect/alter responses
going to the requesting client.
Made changes suggested by pyflakes.
StartTLS should not just be pass-through.

Establishing a startTLS connection to the proxied service is something the
proxy operator needs to decide in advance.

If the proxy receives a startTLS request-- I haven't implemented that, so
the default behavior is for the proxy to return the "unavailable" (decimal 52)
response code as suggested by RFC4511 section 4.14.2.

The `handleStartTLSRequest()` method can be overridden to implement startTLS.

The proxy *can* currently be started using an SSL endpoint, so clients can use
LDAPS when connecting to it.  BINDs don't have to be in the clear.
Unit tests seem to be passing for all the original `proxy.py` tests.
Updated `test_proxybase.py` to use twisted.internet.task.Clock instead of a normal reactor.

I removed the TODO messages (not sure why they were there).
I updated the `createServer()` function in `testutil.py` to inpect the kwargs for
"proto_args".  If found, this disct is used as keyword args when creating the protocol
instance.  I used this to pass a Clock instead of the default reactor into the test
server.
Pyflakes was unhappy because I touched files with some warnings, so I made the changes it suggested.
Implemented startTLS for `ProxyBase`.

According to RFC 4513 section 3.1.1, it is invalid for a client to request startTLS
if:

  - TLS is already established.
  - A multi-stage SASL negotiation is in progress.
  - When there are outstanding responses for requests previously
    issued on the session.

I believe that I have handled the first case.  The 2nd case is not
applicable until someone implements SASL negotiation for the server.
I have not handled the 3rd case.  I will have to give it some thought
as to how it might be handled, especially in light of the fact that
some requests can result in multiple responses.
Made changes to reflect project coding standards.

Removed blank lines.
Docstrings should exist for methods and classes.
'=' delimited by a space on either side.
More coding guideline updates.
Restored module docstring; removed import comments.
Added a way to avoid forwarding requests on to the proxied service.

You can short-circuit the response if (for example) you detect a request that
you plan on denying based on available information.

E.g. based on the client IP, you don't want to allow certain operations.
Added test for intercepting requests and responses.
Merge pull request #30 from cwaldbieser/proxy

Added `proxybase.py`, an LDAP proxy that is easier to hook into.