WIP: declare threadpool interfaces for c/s.

The client and service of a threadpool both implement their own shims,
which implement half of the interface each.  Both interfaces combined
(via multiple inheritance with diamond shaped inheritance diagrams)
create the completed bridge between a given client and service.

Set implementations for client and service management is provided,
so a client can use multiple services and
a service can provide for multiple clients.
Prevent thrpool intfs from going away while in use.
Create noexcept scope operations.
Fix exports and make some trivial code inline.
Implement make_refpointer function.

The implementation is akin to std::make_shared and the (to be introduced)
std::make_unique.
Create threadpool attach function.

This function combines the client and service interfaces
and glues them together.  Then it attaches them to both the client
and service.
This allows an N-to-M model of clients and services.
on_client_detach() must be exported, otherwise vtable cannot reference it.
Implement service methods for tp_service_set.
Copyright + sort includes.
Simplify run code, document member variables of tp_service_set.
Small optimization.
Do not change tp_service_set jobs if they are DETACHED.
Fix symbol exports.
Test that threadpool_intf can properly instantiate.
Move mock code into instantiation test.
Test single run of client/service.
Tests for promise.

Fix promise exported symbols.
Fix linkage of threadpool_intf classes, implement move semantics in threadpool_{client,service}_arg() functions.
Implement race condition wakeup test for tp_service_set.
Make race wakeup test function.