Initial commit.

This adds the initial libmain implementation. It provides a POSIX and
Windows implementation of the threading necessary to run a libspotify
application.

Note that currently the POSIX implementation of multithreading
(contained in core/lock.c) currently has several log_strerror() calls
commented out, a function which does not yet exist. This, or a similar
function, should be provided in a future version of liblog.
Add .gitignore for ignoring object files.

Currently this only ignores Linux object files (based on pattern
matching). An update will be made when development on Windows is
resumed.
Use the new liblog and libcallbacks interfaces.

This commit uses the interfaces using the new naming conventions. See
liblog and libcallbacks for more information.
Standardize naming conventions.

This makes significant changes to the interface by changing the naming
convention of all global symbols.

Previously the naming convention was fairly inconsistent and not well
thought out. This commit introduces the following rule:

All global symbols must be prefixed with spu*_, where * is the shortest
possible identification of the library. For instance, libcallbacks is
"c," while liblog would be "l."
Use the new libcallbacks spuc_type names.
Use new spuc_type enum names.

The enum names were changed in libcallbacks.
Remove unnecessary struct type qualifier.

This is unnecessary because the underlying struct (used here) is
typedef'd. Direct use of the struct is inconsistent with the established
style and it removes the level of abstraction offered by the typedef.
Use the new libcallbacks interface.

This commit updates liblog to use spuc_callback.
Rename files for consistency and clarity.
Remove unnecessary pointer typecasts.

Function pointers are implicitly converted, making the lengthy typecasts
unnecessary.
Make explicit callback functions.

Instead of creating the callbacks within the entry point function
(spum_run()), this uses the callbacks/ directory structure, e.g. liblog.

This change was made for the following reasons:
1. According to the C standard, casting between function pointers (and
calling a function with an incompatible pointer type for said function)
is against the C99 standard. Previously the callback functions were
being typecasted from the general lock.h function prototypes, and thus
violating the standard.
2. It is consistent with liblog, and the newly forming "sputil module
standards and suggested practices," defining the guiding principles for
how to create a modular and easy to use sputil module.
Change coding style for interoperability.
Remove unnecessary and now obsolete comment.
Fix header guards.

This adds header guards if they were not present, and renames them for
naming consistency.
Rename lock_pthread.c to lock_posix.c.

"posix" is more general and can be used as a naming convention for
platform dependent POSIX code in other projects.
Log all pthread return values.

pthread returns error numbers that can be printed with strerror(). With
the addition of spul_log_errno(), liblog now has functions to make that
convenient and streamlined.

This commit removes the old commented out prototype log calls and adds
the actual log calls using the new liblog framework.
Use the new spul_log_errno() specification.

spul_log_errno() has been modified to both accept a variable amount of
arguments, and to act like perror() with log messages (appending the
error message for you).

Specifically, this commit removes the previous %s format specifier in
each spul_log_errno() call (because it is now added for us, just like
perror()).
Add a simple Makefile.

This Makefile has the following qualifications:
1. It will likely only work with GNU Make.
2. Although some platform independent routines are used, it will
probably only work on Linux.
3. It will likely only work with GCC or alike.
4. There is no install target.
5. There are no targets for object files, meaning that their
dependencies are unmapped.
License the software.