Mutex callback extension for libcURL.

Sorry, this is no patch because I have no idea how put the new
source files in the makefiles, in the configure file and so on.

I have tested this code with gcc 2.95.2 (cygwin). After unpacking
this, you can run my favourite makefile: 'gcc *.c'  ;o)

Look at main.c.

Design:
- The user has to supply a create, a delete, a lock and a unlock callback.
  I added the first two because this gives libcURL the freedom to
  use as many different mutexes as necessary. I think this is very
  important since we can not know what additions will be made to libcURL
  in the Future.
- I introduced a opaque curl_mutex_t. This is a struct in which the
  user can store everything that is needed for the mutexes.
- The four functions are gathered in one struct.


1. Defines:

#define HAVE_WIN32_THREADS for windows style threads
#define HAVE_PTHREAD_H for posix threads
Those defines should somehow find a way in the configure
script IF some real mutex implementation should be integegrated
into libcURL.
They are only used in the syncimpl.c file to check which
thread modell it should implement.


2. Files

sync.h and sync.c:
  They should be moved to the lib directory. You will find the
  code for registering the mutex callbacks and a few convenience
  functions there.

syncimpl.c:
  Mutex callback implementations for POSIX and WIN32 threads as an example.
  Furthermore, you will find two funktions which try to register
  this callback implementations with libcURL. This code would typically
  be supplied by a libcURL user (or integrated into libcURL).

export_to_user.h:
  The content of this file must be exportet to a libcURL user.
  I think it should simply be copied to curl.h?

setup.h:
  Well, the content there must be moved to libcURLs setup.h or not...

main.c:
  A simple test program. A good starting point.


