Instrument network calls

This PR works to add hooks for instrumentation/logging around network calls.

This specific implementation works well with [`ActiveSupport::Notifications`](http://api.rubyonrails.org/classes/ActiveSupport/Notifications.html) but does not depend on it, only on an object that responds to `instrument(event_name, payload, &block)` (like the `MockInstrumentationService` for the tests).

This wraps the new private methods `Net::LDAP::Connection#read` and `Net::LDAP::Connection#write`.

Thoughts?

Wraps the simple `@conn.read_ber(Net::LDAP::AsnSyntax)` calls everywhere with instrumentation and cleaner reuse.

Here we're using the `read_ber` with block to get the `content_length`. (I'll admit that I'm not sure what the `id` portion *really* is.)