Move the lock/unlock methods to the backend
Add a default getLatency to ALCbackend

And make sure the backend is properly deleted.
Add a backend factory base type
Convert the Null backend to the ALCbackend style
Modify how VCALL is handled

Now instead of specifying the arguments as a third argument to the macro, like
VCALL(object,function,(arg1, arg2));
they are specified separately after the macro, like
VCALL(object,function)(arg1, arg2);

Also, VCALL_NOARGS has been removed in favor of VCALL0, which behaves like
above but expects an empty argument list (a separate macro is needed to work
around preprocessor limitations).
Separate compatibility declarations
Move the device mutex to the backend
Fix a couple casts
Move ALCbackend base stuff to a separate file
Move some stuff out of alMain.h
Add audio capture methods to ALCbackend
Create and use a backend wrapper for capture
Support capture backends with the new interface
Add a GNU-specific AL_PRINT

This one makes use of the ', ## __VA_ARGS__' construct to avoid
splitting the output into two *printf calls.
Rename the support method to querySupport
Add a missing compat.h include for portaudio
Declare LoadLib functions in one place
Don't return a void
Convert ALSA to the new backend interface
Fix capture with the new backend interface