Fix race condition due to incorrect async usage

* async void is evil since it will run async but can't be awaited
* Also added a Task.Yield() to the exporter so that progress
notifications can go through
Move export type to <string,object> for flexibility

This will allow us to centrally do actions such as convert seconds to
minutes or UTC dates to local time.