Restructure AsyncJSRunner to be Future based
Fix #1315: Add timeout to AsyncJSRunner.await and use it
Fix #1330: Remove sleep-wait in PhantomJSEnv