implement SaveAsync for individual executions

SaveAsync() returns a Task that represents the sequential, asynchronous
execution of all pending actions. Each action is executed
asynchronously, one at a time, until all actions are complete or an
action fails. At that point, the returned Task compeletes.
add atomic support for SaveAsync
support batch SaveAsync
Code formatting and variable naming fixes
Merge pull request #70 from dontjee/AsyncIO

Add support for asynchronous writes