Net::LDAP::Connection#search cleanup

This aims to clean up the `Net::LDAP::Connection#search` method, starting with argument handling. I'd like to also extract size limiting, sort controls, paging, and anything that should be encapsulated better. Should also try to expand any lacking tests.

@jch this may help us extract the `SearchRequest` object.

cc @jch @schaary 

Tempted to accept symbol aliases (`:base` for `Net::LDAP::SearchScope_BaseObject`) but that falls out of scope for this PR.