Turn test files from headers to bodies

Having test suites in .hpp files takes huge compilation times. This
change moves all the tests from .hpp files into .cpp files. After that,
each test suite will belong to a separated compilation unit, so changes
in sources do not require to recompile the all the unit tests but only
the affected ones.

In this process, some scoping issues arisen. Each test suite was
introducing `using` directives making all the code visible from almost
anywhere. Now each unit has to explicitly indicate the namespace of
the entities it is using.