Add default options enum.
Add error markers to the state for later retrieval

Also, if an error occurs in sparse_close, the state is no longer zeroed.
This way, you can at least check what was going on in it when the error
occurred, though the only really useful part is the error_begin and
error_end members.
Remove SP_HAS_CALLBACK conditionals around CB calls

These are mostly unneeded since SP_SEND_MSG checks for whether the
callback/block are NULL before attempting to call one or the other.
Wrap header and source in extern "C"
Remove needless undefs at the end of sparse.c
Add C++ wrapper for Sparse.

Why not?