Thread safe tcv_t

Mutex Protection:
- all tcv_xxx  functions use mutex
- tcv_xxx functions use error checking if called uninitialized

Interface cleanup:
- hide data types from client
- provide fuctions for creation and intialization (avoids uninitialized use of mutex) etc.

Compiler infrastructure:
- Fix code coverage options for gcc (I don't know when it broke)
- discovered that gcc accepts --coverage (same as clang)