Significantly change vservice shutdown procedure

Currently VService.stop() is a blocking call.  It signals to the tasks
that they should stop, and then blocks, waiting for them to stop.

Let's change that for now.  There are three functions now:

.stop() - Signal that the service and tasks should stop
._wait() - Wait (polling) for the tasks to shutdown
.join() - (unused) Call join() on all the threads.

Fixes #37