copy ROM into vm.m (main memory) rather than keep reference

ROMs are not strictly speaking Read-Only since at the very least the
contents of the PC will change during the course of execution and the
PC is just the first word of main memory. So in order to be able to
run a ROM more than one, copy it when constructing a MakoVM object.
improved top-level run code a little bit, started porting Mako.exec.

Also added two different implementations of `write` for charactor
IO (writes to the CO register). In a headless environment like Node.js
we can use process.stdout.write, but in the browser we have to buffer
character writes until we see a newline, then flush to
console.log (console.log appends an implicit newline to every call)
ported drawing code, added simple HTML page

One bit of code had to be tweaked, changed this Java code:

    if ((c & 0xFF000000) != 0xFF000000)         { return; }

to this JS (to work around lack of 32-bit integers):

    if (((c >> 24) & 0xFF) !== 0xFF)            { return; }

This line checks if the pixel contents are opaque or not, and skips
drawing if it is non-opaque.