Refactor the external runner protocol to spawn fewer processes.

This my attempt to fix #171.  It changes the external runner protocol so that it only spawns one subprocess per user per cycle, not one per hit per user per cycle.  @ametaireau thoughts?