Rejigged Widgets Redux

[Carried over from the abortive pull request #169]

A major refactoring of the render tree and widget architecture for TiddlyWiki5.

The primary driver for the work is to make it possible for widgets to not have to generate DOM nodes. This will get rid of the extraneous wrapper DIVs that are seen in TW5 generated HTML content today.

Other benefits of the refactoring:

* Much simpler. The render tree is now just a tree of widget nodes, each of which inherits from a common widget base class
* Macros and context variables merged into a single entity, simplifying the implementation (a macro is now essentially a context variable that takes parameters)
* None of the `this.renderer.renderTree.wiki.blah` nonsense
* More unit tests than before, including unit tests for the refreshing mechanism
* Widgets are now rendered directly into the document, rather than into a DOM fragment. This makes it easier to work with third party libraries

This pull request will be complete when all existing widgets have been ported to the new architecture.