fix last work will be called twice

Non-async workflow or array of non-async work will cause baton#pass()
accidently called twice, which result in last work being called twice.
merged in CatTails changes and bumped version to 0.9.0