Atomic form processing

I decided to do a try except followed by a bare `raise` just to highlight the fact that I know this has the potential to throw that error, and I've decided to let that error bleed through rather than handle it. I could remove it all and it'd be the same, but to me that's less explicit.

`BulkSaveError` is raised if any of the docs have errors saving, e.g. an update conflict. `e` has `results` which is basically what couchdb returned and `errors` which is just those results which had an error in them.