Code cleanup

Use the same synchronization function in all sohva modules. As well,
these functions rethrow the exceptions to make stack traces clearer.
Add common interface

Adopt the same common interface approach as the sohva client for
different flavors (async, sync and control).