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?

Or maybe it means it should be easier/possible to override the socket class programmatically.