move/delete directories (Fixes #234)

Pulled out calls to the mongo driver into a MongoWrapper trait which
puts everything into Task.

Additional tests.

Are you sure this is doing what you think? I haven't looked at the implementation, if it's using Random wrapped in task or some variation thereof, it's probably fine, but if it's a deterministic counter, it will always generate the same name.