Cleanup api server creation

Current implementation is hard to reason about because of trying to mix
unix/tcp server implementations, even though they are quite different.
This cleans that up.

Also makes it possible to create and manage a new API server easily,
e.g. for adding an introspection socket to a container.

Built in such a way as to allow a non-HTTP server to work as well, such
as libchan.
For some future non-http api endpoint.
Ideally not private since we may want to invoke a new server from daemon (for instance, add a socket to a --privileged container, or something).