Merge pull request #47 from lavelle/dbfs

Add incomplete Dropbox backend
Merge pull request #48 from lavelle/dbfs

Finish adding incomplete Dropbox backend
Alright. I think my credential harvester works; at least, it appears to.
Whoops. I didn't realize auth also called the callback.
OK, it's finally working. I copied Dropbox's credential logic and
modified it a bit. I need to hook it up to Makefile logic, though.

The Makefile should:
* Generate the SSL key if not present.
* Run get_db_credentials, which should check if the existing credentials work.

I also need to fix get_db_credentials so it exits when the keys are generated. It doesn't appear to do that right now.
Fixing a race in append file. Whoops.

We caused this when we changed synchronous calls to async calls.
Whoops; I was mistaken last time.

Synchronous mode makes each file update immediately visible.

But I changed the ftruncate test to sync after every truncate... didn't seem to fix it, though.
Fixing a typo.
Fixed truncate! We weren't keeping buffer 1-1 with the file contents; we didn't make large buffers smaller, for example.