Simplify lexer whitespace handling

Trailing spaces were causing the lexer to crash. Now all spaces at the
beginning of a token are removed and ignored. The parser will treat end
of input as a newline, but knows not to keep requesting tokens once it
encounters the end.

A second bug in the lexer that was jumping back too far when a number
was overlexed has also been resolved.
Remove lexer error on zero literal

The lexer would complain about a leading zero on a number literal that
was exactly that character. Now the lexer checks to see if the next
token is actually a number before reporting a leading zero.
Add import and extend interpreter interface

The interpreter now supports loading modules directly. This allows it to
handle both import statements as well as provide a module loading method
as part of its external interface. The module loader can be customised
by providing a function to the interpreter when it is constructed, but a
default using the Node.js file system is available. This default is also
exported so it can called by a custom module loader. Modules are cached
in the interpreter and paths are normalised to ensure that overlapping
imports are not processed more than once.

The interpreter cloning mechanism has been modified to use JavaScript's
prototyping rather than directly copying across all of the constants
into the clone.