server: require explicit starting

Stopping already happens automatically with a using() statement.
server: add IsRunning state inspector

This necessitated a few tidyups.
add simple unit test project