Initial commit.

This adds the public interface and a placeholder (empty) implementation
of it.
Return spuli_mode from the public functions.

Instead of simply returning some arbitrary int, each function should
return a spuli_mode, indicating what was done.
Reorder spuli_login() parameters.

This makes spuli_mode the first argument to spuli_login(), which is
consistent with spuli_forget() (which only takes spuli_mode).
Remove enum identifier in typedef.

Previously enum spuli_mode had its own identifier. This commit removes
it, forcing the use of the typedef.
Add .gitignore for binaries.
Make remember_me a separate parameter.

Instead of encoding whether or not to remember the user for a given
login attempt in spuli_mode, this commit moves it to its own parameter.

This is preferred for the following reasons:
1. The remember_me flag has ambiguous meaning for spuli_forget() et. al.
2. The remember_me flag does not fit into the spuli_mode group; it is a
special case.
3. An upcoming commit will introduce additional files to handle each
authentication method, each of which will need to know if remember_me
was set. Instead of passing a mode, or passing a truth test on the mode,
making it a separate parameter is consistent and easy.
Change the spuli_forget() prototype.

Some authentication methods may need additional information to forget
data.
Add core/libspotify.c authentication method.

The libspotify authentication method attempts to use the data stored
within libspotify itself, which is used when passing 1 for bool
remember_me in sp_session_login().
Reorder spuli_login() parameters for consistency.
Fix libspotify auth return values.
Add initial blob auth implementation.

This adds blob.c and blob.h, and modifies login.c to use the
authentication method (if requested).

Note that currently "remember me" functionality is not implemented,
which is required for the blob file to exist in the first place (it
needs to be bootstrapped).
Rename the module to libauth.

libauth is a better name for the following reasons:
1. liblog is a subset of the current name, liblogin.
2. libauth is shorter and more general.

This commit renames files, header guards and variable names, all for
consistency with the new name.
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.
Fix OBJECTS Makefile file extensions.

Previously the OBJECTS files had a .c extension, which meant they would
not be individually compiled. The only reason it worked is because gcc
can take an arbitrary list of source files and compile them "in place,"
(usually in a temporary directory), then link it all automatically.

This commit gives the correct .o extension.
Don't pass sp_session * to spua_forget_blob().

spua_forget_blob() will not require the sp_session to forget itself
(when implemented).
Rewrite how the public interface works.

This commit makes major non-compatible changes to the public interface
of libauth. Specifically, the following changes have been introduced:
1. spua_mode has now been broken up into a struct, spua_config. The
spua_config struct is responsible for storing data necessary for
performing login with each of the authentication methods.
2. The spua_getenv() function has been added to fill in a spua_config
struct with data from the environment. Additionally, in favor of this
approach, the spua_environment flag has been removed. Note that this
uses getenv(), making it non-reentrant and non-thread safe.
3. The spua_libspotify authentication method has been split into
spua_relogin and spua_credentials. Previously, it was planned that
normal login with passwords would be apart of spau_libspotify. This
change makes using sp_session_relogin() and sp_session_login() (without
using a blob) two separate authentication methods.
Make spua_getenv() return the spua_config *.

This commit makes the spua_getenv() function return the spua_config *
that was passed to it (to be filled with environment variables), instead
of returning void.

This is for convenience in the event that it will save a statement.
Implement spua_credentials authentication.

spua_credentials simply logs in with a given username and password.

Additionally, this commit makes the relogin remember and forget
functions apart of spua_credentials. For remembering, this is required
as a sp_session_relogin() can only work after setting remember_me to 1
in sp_session_login() (which is in spua_credentials). So, it makes sense
to make forgetting apart of spua_credentials instead of spua_relogin.
Add a missing free().

spua_login_blob() was using malloc() to allocate the buffer used for
reading the blob file, but not freeing it after logging in.