Replaced save_all API with batch_save.

The original approach I took here, where 'save_all' would save all unsaved changes, was causing mysterious core dumps involving the 'ref' gem. Had to rewrite the API to remove the need for weak references.
Merge branch 'add-bulk-operations' into batch-save-approach
woop woop woop