Fix some bugs uncovered by Clang warnings.

Whatever gave me the silly idea that MIST and TREES were objects?
Of course they're verbs!

I took this as an excuse to remove my examine_trees() code, which was
really an unwarranted bug-fix to Platt's code, and I'd been having
second thoughts about it for a long time.

I've also added "default: break;" clauses to the ends of a few
switch statements, which makes the compiler happier. But I haven't
done this consistently throughout, so -Wno-switch is still needed.
Cosmetic: Clean up the used_movement_*() code.

In my last commit, I accidentally introduced a routine used_movement_obj()
that was a duplicate of the existing used_movement_objword(). These names
are much too long anyway; I've renamed them to movement{,v,o,p}(),
following the same model as keyword{,v,o,p}().
Revert Knuth's changes to the original dwarf-knife-throwing messages.

My port's knife-related messages now (except for capitalization) match
the messages given in WOOD0350/.
Add missing blank lines before printing the score in finis().

This omission was particularly noticeable if your game was ended
unexpectedly by the grey-clothed wizard.
Add macros for customizing line length.

Instead of hard-coding all newlines with "\n" (to match the original
programs' line breaks exactly), I've replaced all line-wrapping
newlines with the macro SOFT_NL. Lines broken by a hyphen have been
categorized as SOFT_HYPHEN (e.g., "infor-mation") or HARD_HYPHEN
(e.g., "hard-earned"). Line-breaks which do not wrap lines (for example,
the line breaks in your inventory listing, or listing items in the
room with you, or Platt's many "shaped" messages) are left as "\n".

If you want the text to use the full width of your interpreter window,
replace these definitions:

   #define SOFT_NL "\n"
   #define SOFT_HYPHEN "-\n"
   #define HARD_HYPHEN "-\n"

with these:

   #define SOFT_NL " "
   #define SOFT_HYPHEN
   #define HARD_HYPHEN "-"

I could have done this for Parchment or Z_MACHINE targets in general,
but actually I prefer the current look, even in Parchment. However,
since the change might be useful to other consumers of the code, I'm
checking it in anyway.
Implement UTF-8 output in putc().

After this change, it's actually possible to print UTF-8 strings
in the natural way. My compiler optimizations already bail out in
the presence of non-ASCII bytes, which means we never try to "print"
a string containing multibyte characters. Such strings always go
through the "cstubs.c" versions of printf() and puts(), which delegate
the printing to "stubs.inf"'s version of putc().

In this revision, I've changed putc() to collect non-ASCII bytes
and concatenate them according to the UTF-8 rules, then print out
whole codepoints using the Z-machine's "@print_unicode" opcode.

Linux Frotz has trouble with non-ASCII Unicode characters, but
Fizmo and Parchment both work fine. There is a @check_unicode
opcode that reports whether a given codepoint is handled by the
interpreter (see www.firthworks.com/roger/informfaq/aa20.html), but
I don't see any sensible way to use that feature at this low level.
If we find that a character isn't handled, what do we replace it
with?

My Adventure ports don't use UTF-8 functionality yet, but they're
about to.
Make the puts/printf optimization understand UTF-8.

Before this revision, embedded multibyte characters would
disable printf/puts optimization. After this revision, those
character sequences are recognized as UTF-8 and compiled into
appropriate "@print_unicode" opcodes.

The library changes in commit 809bbf7c are still necessary,
for the benefit of puts/printf calls whose arguments are not
string literals.
Add a macro for EMDASH.

The macro EMDASH("--") can be set to expand to either "--"
or U+2014 "EM DASH", depending on your target system. Right now
I've set it to expand to "--", to preserve Woods' and Platt's
original ASCII formatting, but on Parchment a true em dash looks
much better.
Fix the "freebie cage" and kill_dragon() bugs.

These two bugs have been at the top of my fix-it list for
quite a while. Picking up the cage should check your strength
limit correctly (even though the bird is a FREEBIE object);
and when kill_dragon() merges the two "secret canyon" rooms
into one, the objects in one room need to get merged with the
other. Platt's code tried but failed to get this right.
Turn on the EMDASH macro in this branch.

Em dashes will now be rendered as U+2014 "EM DASH".
Search-and-replace ";  " with "; ".

Platt had the idiosyncratic style of putting two spaces after
each semicolon, as well as after each sentence-ending punctuation
mark. I don't mind them after periods and exclamation marks, but
two spaces after a semicolon just looks weird to me.
Fix two movement-related oddities in Platt's code.

In the cobble crawl, typing NULL or NOWHERE would move you
to the cave entrance. This seems like an accidental glitch;
I've now removed it in my master "cleanup" branch.

At top of small pit, typing DOWN (while toting the gold
nugget) should have the same effect as typing PIT or STEPS,
but it doesn't, thanks to another apparent oversight by Platt.
This is now fixed. Also, typing JUMP should take precedence
over the gold-nugget response, and simply kill you.

I've also coalesced a lot of movementv() calls into
movementv2() and movementv3(), just for kicks.
Bring into line with master commit 88406c16.

This revision adds Unicode em-dashes, and fixes several of the
bugs whose behavior I had been carefully preserving from Platt's
original version. If you want to play the game with those bugs
still in it, you'll have to check out the "original-bugs" branch
and build it yourself.