Add SFP_WRITE_* flexibility, re-work code style

Based the code style after GLFW, one of my favorite libraries.

Callbacks must be explicitly set using sfpSet*Callback() functions.
Every such sfpSet* function allows the user to set a user data pointer
as well. In the case of the lock and unlock functions, this takes the
place of the mutex parameter.

There are now two write methods supported: SFP_WRITE_ONE and
SFP_WRITE_MULTIPLE. In general, if your system requires that you send
bytes out one at a time (like on AVR), then you can do something like
this:

void write (uint8_t octet, void *data) {
  /* write a byte */
}

int main () {
  sfpInit(sfp_context);
  sfpSetWriteCallback(sfp_context, SFP_WRITE_ONE, write, NULL);
  /* ... */

Note that in this case the user data field is unused--that is the last
parameter of the write function, and the last (NULL) argument to
sfpSetWriteCallback().

If your system allows for more efficient transfer of multiple bytes at
a time, then that would change like so:

void write (uint8_t *octets, size_t len, void *data) {
  /* write many bytes */
}

int main () {
  sfpInit(sfp_context);
  sfpSetWriteCallback(sfp_context, SFP_WRITE_MULTIPLE, write, NULL);
  /* ... */

Right now, the SFP_WRITE_MULTIPLE functionality isn't particularly
optimized, but is simply included to make integration into libbarobo
less horrible. It still calls an indirected "write byte" function,
which buffers the byte internally, only calling the user-provided
"write bytes" callback when the buffer is full, or the frame is
complete.