Catching errors in Javascript execution

  * Both deliberate and unintentional
  * Protocolling results and error messages
  * Adding integration level tests
  * Skipped lower level tests because I don't quite know yet how this
    will evolve