First stab at ldap manager using shellac
Restructured and split into separate classes

- New LDAPSession class, containing LDAP methods
- LDAPman class renamed myShellac - Shellac-only methods
- All config and options stuff moved to 'top-level'
- Tidied up get_conf()
- myShellac supports cmdloop() and onecmd() calls (depending on cmd-line args)
- Temporarily commented-out completer decorators (bduncan to resolve)
Context manager for LDAPSession, incremental fixes to ldap_search. LDAPShell defined in main() (in the scope of LDAPSession object).
options and config don't need to be passed around
Config file fixes

- Double % in config file needed for literal %
- Remove unnecessary spaces/quoting in config file
- get_conf args should be strings
ldap_search improvements

- Use synchronous search with timeout
- synchronous search returns results differently
- Set scope and timeout args (with defaults)
- Attempt to return something valid for tab-completion
- Remove exception handling (used for debugging only)
Add user cmd and fix ldap_user_search.
Add timeout handling to ldap_search
Use shellac CompletionError to report ldap timeouts

- Use an explicit message as ldap.TIMEOUT  doesn't have  anice error string
Collapse user_ and group_ functions into one with a 'searchtype' argument.
- use functools partial to pass in 'searchtype' from decorators
Create ldap_attrs function
pep8
Pretty print ldap_attr output
Add server schema querying
- ldap_objc method
- hack to differentiate between help and tab-completion
Add group do_add method and ldap_add stub
- Add help_add to test objc querying
Tidying up ldap_objc function
- remove flatlist flag, use complete_add function instead
- change objectclass separator from :: to ,
- tidy help_add code and indentation
Create ldap_add function
- take k=v options on the command-line and convert to a dict using ConfigParser
- use this dict with ldap.modlist to generate ldif
- check attribute presence against the objectclass schema 'must' list
Tidy up configuration handling
- Split config file into sections, remove string formatting magic
- cross-section interpolation only in 3.2, so remove global:base :(
- use full DN in bases instead
- get_conf not being used, so replace with explicit config.get
- remove all cmd-line opts except config file
Change how object-specific config data is handled
- Stop passing an object 'type' around (searchtype)
- Instead, make a nested dict for all config, schema data etc (objconf)
- Pass the appropriate level of this dict to functions
Add default attribute 'templates' for certain operations
- add defaultattrs to config file - expects a dict
- use literal_eval to convert this to a dict and merge with ui-spec'd attrs
Minor code tidying, pep8 etc
Make schema loading 'lazy'. Try to match the 'official' LDAP glossary.
Make server an instance attribute
Add deletion support
Offer options.force and/or interactive prompting for 'unsafe' operations
Remove wildcard from config to allow explicit use elsewhere.