State serialisation improvements

* The Story___ passages are no longer forbidden from being included via
StoryIncludes.
* The story state serialisation functions have been rewritten to allow
basic JS functions to be stored. (Of course, this relies on function
decompilation, so bound and native functions will silently fail. And,
when recompiling them, their original scope is lost.)
* Also, the clone() function has been updated to hopefully allow certain
native objects to be cloned more effectively.
* Added an Array.isArray() polyfill.
* Altered all internal eval() calls to be run by an internalEval()
function, thus making the eval scopes slightly more uniform (and
centralising the 0, object literal kludge).
* The engine now records the previous value of window.onerror, and
restores it once the message has been displayed once.
Altered passage editor tab width

The passage editor now uses a four-space-wide tab width.