Merge pull request #68 from mmcgill/AsyncIO

Support for asynchronous reads
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