Implement framed embedding support.

This commit supports a special user "frame.pencilcode.net":
loading code into this user will disable all the normal top UI
as well as saving functionality; and it will just show the
two-pane view with an editor and run panel, bare.

Embedding is supported by a client script pencilcodeembed.js.
Added two way communications between embedding frame and PencilCode frame using postMessage().
Added onDirty event to travck changes to code editor.
Significantly improved test and fixed bugs.
Edited help text and added example.
Removed tagId. Improved validation of the child to parent message authenticity. Incorporated code review suggestions.
Added getCode() method.
Changed event style from pce.onLoaded = function(){...}; to pce.on('loaded', function(){...});.
Added on('error', ...) callback. Found and fixed an error in the test.
Tweak embedding API and rationalize trailing \n.

- On PencilCodeEmbed, rename past-tense event names "loaded" to
  present-tense "load", etc.
- Add more detailed unit tests that pull apart event sequencing, and
  adjust firing of the "update" event to match the test.
- Rationalize handling of trailing "\n" so that the editor always
  ensures a last line ending with "\n" even on initial load.
- Adjust embedding API so that write-only methods can be chained.
Merge pull request #63 from PencilCode/framed

Implement framed embedding support, to enable applications such as embedding in an EdX lesson.