Improved performance of Tweelexer

Tweelexer now uses a concatenated regex to find tokens instead of just
applying all the regexes to every single character. Also, HTML tags are
now bolded to make their colour more distinct.
Minor Tweelexer bugfixes

Fixed a bug with the macro regex, and made old-style HTML blocks
coloured correctly again.
Selected passage colouring improvements

* Made passage widget dimming work again in fast drawing mode.
* Selected passages now have their link arrows thickened to visually
offset them.
* Changed syntax highlighting for the two-part link syntax: the link
text is now black.
Syntax highlighting for macro params

* Macro parameters are now coloured differently depending on their
apparent type (string, number, boolean/null/undefined, other).
* Toned down the saturation of link colouring.
Made the passage tooltips functional

They now display a preview of passage text (up to 840 characters), like
they always ought to have.
Some tiny bugfixes
Fixed file format backwards-compatibility

The .tws pickle format was broken when I added those cache attributes to
Tiddler in "Minor StoryPanel and PassageWidget optimisations".
Added file drag and drop functionality

Dragging a .tws file into the StoryPanel will open the file. Dragging a
.twee or .html file will attempt to import the file.
Added image drag-and-drop and embedding

* Dragging and dropping an image file into the story map will embed it
- a passage, tagged 'image', containing the file encoded in base64, will
be added. Thus, images can now be saved inside the .tws file and the
compiled HTML.
* Supported image file extensions are GIF, PNG, JPEG, SVG and WebP.
* The [img] syntax has been updated to allow 'image' passages to be
referred to in addition to filenames. This allows embedded images to be
used multiple times in a story, without redundant extra copies being
included.
* Added PassageWidget colouring for 'image' passages.
* Also added an 'Import Image' menu item to the Story Menu.
Embedded image previewing added

* Base64 image passages can now be opened to display the image. The
ImageFrame window currently only shows static images, with no GIF
animation, and large images cropped at 1024x768.
* The ImageFrame window's menu includes 'Replace Image', which can
replace the image with a different file.
* The tag that denotes an image passage is now 'Twine.image' instead of
'image'. This tag can not be given to text passages, nor removed from
image passages.
* Fixed drag-and-drop not working with non-lowercase file extensions.
Added Copy and Paste menu items to image previews

* Pasting an image will naively convert it to PNG. This may produce PNGs
that are far larger than they would be as files, but I'm unwilling to
add a "cutoff point" beyond which the file is changed to a lossy JPEG.
* The tooltip for image passages now lists their rough file size.
Images are now thumbnailed in the story map

Also instantiated an 'images' module to hold base64/bitmap conversion
methods.
Fixed "TypeError: Required argument 'w' (pos 5) not found" error by
passing Width and Height parameters to DrawBitmap method call