Add lib/keyboard.coffee
Keyboard extends Sprite

This way, a keyboard is just another Turtle that you can move around
on the screen just like any other turtle, for fun and nice visual
effects.
Speed up keyboard using canvas drawing.

Turtle drawing is slow, so this rewrite expresses the keyboard
drawing using raw canvas drawing.  It now preforms acceptably
well in Firefox.
Friendlier constructor for Keyboard
More muted colors.
Merge pull request #70 from PencilCode/keyboard

Add lib/keyboard.coffee
Implements # @script pragma and ide.setEditorText.

A second shot at the template idea, but done very differently.

Here is the proposal:

(1) script pragmas.

If the coffeescript file has lines that begin with:

Then we should run the file by adding a <script src="..."> corresponding
to that URL.

I think /turtlebits.js (which includes jquery, underscore,
jquery-turtle, and coffeescript) will always be included first (it
doesn't need to be specified by script), followed by the script-pragma
scripts.

To make it natural to include turtle-based scripts, turtlebits.js
now instantiates the turtle by default.

What if you don't want the turtle?  We provide a script so that

Does a turtle.remove for you.

The advantage of script pragmas over "await loadscript URL, defer()"
(which is what we currently do) are:

(A) it's shorter and easier to type.
(B) Even if the rest of the program has syntax errors, the pragma'ed
script can load and run.
(C) So we can run these scripts even in the case where you aren't ready
to run your program yet.

(2) ide interface

Today, if a script running in-frame reaches out to its parent frame, it
can already get an "ide" object that allows it to highlight lines of
code.

Now the "ide" interface is extended to allow a script to
see its own code, and to also modify it:

window.parent.ide.getEditorText();
window.parent.ide.setEditorText('foo');

That makes it possible to write scripts that display UI that generate
code or that score correctness based on what sort of code was written by
the student.

Of course, when the script isn't framed, the ide isn't present, and
of course, when you modify the text, it doesn't actually change the
running code until the user runs the program again.

(3) Default run should include pragma scripts

Today, when you open up a file without running it, it shows a "blank"
turtle run screen on the right, i.e., it loads turtlebits.js without
inserting your code.  That way you can get help and test turtle commands
right away.

When you load code with script pragmas, it should do the same, but it
should include the <script> tags for the pragmas.  That allows fancy
script-building UI to show right away, before running the program.

(4) Javascript support and /code/

Coffeescript pragmas are less powerful than templates in that it doesn't
let a file run in "javascript mode" or "css" or "html".  But I think
that was a confusing feature.

You can already do that by naming your file ".js" or ".css" or ".html",
and I think we can just continue to treat those as different modes,
selected by changing the filename.

To make Javascript a usable idiom, we should make /home/*.js drop your
javascript into an executable environment just like your coffeescript
is, and we can support //#script pragmas the same way.

(This isn't implemented yet.)

To make it possible to write your own "includable" javascript and
coffeescript, we should introduce a new URL prefix /code/ that just
gives you the raw code without wrapping in HTML.  If you want to include
a script in another script, you use the /code/ URL

(This is included in the new nginx configuration.)