move empty observable to a header
move the async_observable to a header
enable the test for async
rename async_* stuff to thread_*
devirtualize thread_observable