Optimized the concatenation of Twee story fragments

The main thing is to avoid adding to a string repeatedly, since this
requires an increasing number of bytes to be copied again and again
as the string grows. Instead, pass a generator to join().
Commit 3914ac50 does something similar for HTML fragments.

Added "order" argument to docstring.

Changed the "not order" check to "order is None": if the user passes
an empty sequence for "order", the correct output is the empty string.
Add "untwee" command line tool

This is similar to the old Twee "untwee" tool: it reads a story
in HTML format and outputs in Twee format.

The code is derived from the "twee" script though rather than from
the original "untwee" script.
untwee: Order passages in output

Split the story passages from the info passages and put the story
passages at the end.

Within those two categories nothing clever is done yet, so for now
I just sort the passages by name alphabetically; that's at least
more helpful to human readers than using Python's hash order.
untwee: Try to put info passages in a meaningful order

The special passages are in the order that SugarCane/Cube display them
in the side bar. Annotations were put last since they could be related
to either the info passages or the story passages, so having them on
the boundary between info passages and story passages made sense.
untwee: Added passage reorder command line option

This controls whether the output passage order is equal to the HTML
order (order preserved) or whether untwee should compute a passage
order (reorder).

The default is to autodetect whether the passage order in the HTML
is likely to be meaningful. Currently this happens by determining
which compiler created the HTML: iff the compiler preserves the
input passage order, untwee will preserve the order as well.
Merge pull request #132 from mthuurne/untwee

Untwee