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 

The PR removes the default base (raising an exception when no base is set), which was `"dc=example, dc=com"` which I feel is not helpful and better to remove and break behavior somewhat.