LDAP.pod,FAQ.pod: harmonize documentation of scope values
FAQ.pod: update info on required/optional modules
Makefile.PL: update recommends, add comments on core modules
Util.pm: add time conversion functions
RT#83815: fix typo/bug in example for root_dse

Thanks to Carsten Dumke <Carsten.Dumke@gmx.net> for reporting it.
RT#73202: LDIF.pm: Base64-encode values ending in spaces

Although not required by the RFC, Base64-encode those values that end in
spaces when writing LDIFs.
This makes it easier for the user to visually detect those values and
increases compatibility with other implementations (e.g. OpenLDAP's
ldapsearch).
LDIF.pm: partially support controls when reading

LDIF change records may contain 'control:' stanzas.
Instead of chocking on them when reading, decode them properly.

In this commit, the controls read are not returned to the caller,
they are only parsed in Net::LDAP::LDIF internally and ignored.
This is done in order to leave the API unchanged.
LDIF.pm: clean up handling of mode parameter

When operating on the standard IO handles, treat mode 'a'/'>>' (append)
the same way as mode 'w'/'>' (write) instead of 'r'/'<' (read).

Allow using the "translated" mode codes too: '<', '>', and '>>'.

Use 3-parameter open when possible.

Rearrange the code slightly to make it more readable.
Constant.pm: add constants for Novell eDirectory
Extra/eDirectory.pm: new; extensions for eDirectory
FAQ.pod: mention Dancer::Plugin::LDAP, update example