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?

And same for `@conn.write(packet)`. Could probably drop the `packet` and collect the bytes written response from `@conn.write` in the payload explicitly.