Move files to corresponding package (missing changes)
Add a scheduler to execute tasks using order key.

The implementation is quite similar as bookkeeper's OrderedSafeExecutor, but leverage guava's futures