Improved implementation of JSServer

Instead of running  single goroutine to process requests, split the Otto
code out into a new class JSRunner and keep a set of available
JSRunner instances for goroutines to check out and return. This allows
multiple goroutines to run JS code at once, and also doesn't require a
separate goroutine that has to be cleaned up afterwards (so the Stop
method is no longer necessary.)