There are certain situations in which getAuth() may want to be overridden by a
backend for performance reasons. The attached patch converts getAuth() into a
virtual backend function. The default is for no change in functionality. In my
tests this leads to very significant performance improvements under certain
situations

fixes PowerDNS/pdns#581
fixes PowerDNS/pdns/657

I noticed this as a result of the changes in 3.2 whereby each receiver gets its own distributor - whenever the dynhandler calls ->getBackend() it will only find the one in its' current thread, so reload won't propergate to backends within other threads.

However, I suspect this condition has always been around as a race - if I have multiple distributors and I call reload; one thread is issuing reloads while all the other backend threads are currently executing (potentially). I guess if you call reload in previous versions on a highly loaded server with multiple backends you could probably get it to crash.

The attached patch changes it so that each backend has a variable which is changed to signal that a reload or rediscover has been requested. When processing gets to an appropriate point ie before it next queries the backend database, such an operation will be run. Note that it is not run in ::get as we don't want a backend to be reloaded between performing a lookup and getting the records.

This patch means that reload/reinitialize are not done straight away as in previous versions, but on a moderately loaded server this should not be a problem as they will be performed the next time a backend is called.
fixes PowerDNS/pdns#693

removes number of static variables and makes them class, also optimizes if query cache is disabled.
Initial commit of lmdb high performance backend. Capable of over 350kqps performance without caching