allow setting default stacksize once via task::main
simplify stack cache logic
boost unit test isn't thread safe. don't use it from threads.
add task::join and task::joinable
use static_cast minimally, avoid reinterpret_cast where possible
don't do math on void*, it's gcc-specific and warns
illegal task::join() throws system_error() just like illegal thread::join()
std::forward in throw_if
implement connection timeouts for http, and ensure sockets hit with timeout are discarded
net tests for http request timeout and connection refused
on close(), log(DFATAL) if errno is EINTR; on Linux it can't happen and appropriate action is unknown
only close an http client socket if it's open
add should-never-happen sanity check of cached stack size