cleanup
Convert tests to use unittest instead of py.test.

Main motivation was to ease possible migration to Robot Framework
later. Classes were needed anyway to add namespaces.
Argument conversion and spec validation
Use wrapt module instead of decorator to preserve argspec.

This allowed to turn the decorator into a class and also simplified the
code considerably.