Thread0 can call pthread_exit()

Needed to not free thread0's TLS (it was never malloc'd), and needed to
trigger exit() when the last pthread (including thread0) exits.
Slightly more consistent VC count interfaces

The main concern was the size of size_t vs uint32_t.  We're still sloppy
about uint32_t vs int.

The kernel header still has max_vcores as a size_t.  I'll change that
next time I muck around in that part of the headers (I don't want to
force more toolchain rebuilds).