Fix problem with editing tiddler titles

The check whether a draft has been modified was ignoring changes to the
title.

Fixes #593
Accept single quotes for attributes in TW files
Add banner for binary tiddlers in edit mode

Makes it easier to add tags to a binary tiddler (eg a PDF).
Remove dead code typo
Start adding support for permalinks

At this point we respect any permalink at startup, but we don’t yet
dynamically update the permalink, nor do we respond to ongoing
permalink changes.

The permalink separator being `%00` seems like it might be a bit
controversial. It buys us not having to wrap tiddler titles in double
square brackets if they contain spaces.

Another thing is that this scheme doesn’t support tiddler filters; the
plan is to support them like this:

http://tiddlywiki.com/#!Target%00%00[tag[task]sort[created]]
fr-FR translations for shadow tiddlers and binary content warnings
Adopt new URL scheme for permalinks

Instead of using `%00` as a separator we do the more conventional
`#!<target-title>:<story filter>`.
Change references to editions/clientserver into editions/server
Fix oversight in isDraftModified

If the original tiddler doesn’t exist then we should count the draft as
always having been modified
Add support for onhashchange

Now we respond dynamically to changes in the location hash in the URL
bar. It means that you can do links in HTML as `<a
href=“#HelloThere”>go</a>` and in Markdown as `[example
link](#HelloThere).`

We still need to make startup.js more modular
Docs updates
WIP: Add support for dependencies between startup modules

See StartupMechanism for details.
Docs typo
Split module loading into a separate startup task

Still a work in progress.
Remove support for browser-startup modules

Instead support startup modules that stipulate which platform they
require.

Also include docs updates and fixes to fullscreen plugin
Fix googleanalytics plugin to be platform-specific
Add support for "before" field on startup modules
Split main rendering into it's own startup module
Pull more of startup.js out into separate modules
Refactoring more of startup.js into modules