extract synchronization method

the code was duplicated across several classes, which is basically
something bad to avoid. By extracting the synchronization method at the
package level, we can now share it
[new] add `control` package

This package is similar to the `sync` package but returns an object of
type `scala.util.Try` instead. It allows people to manage exceptions in
the heap and not on the stack
add merge method

Allow for merging configurations programatically