Sub to only personals by default

Rather than subbing to classes by default, sub only to personals. This removes
the need for the dev.py script, since main.py can be used directly. It also
eases running multiple production Chiron instances -- for example, one as
daemon/chiron and one as daemon/chiron.mit.edu.
Expand description of running Chiron

Talk more about the primary production deployment vs. private deployments,
reflect main.py's new option, and expunge mention of dev.py in preparation for
killing it.
Kill dev.py

The last two commits have made it unnecessary and removed it from the docs, so
go ahead and delete it.
Treat all zephyrs as UTF-8

Apparently basically all zephyrs are UTF-8, but the charset field usually lies.
Given that, if we want to handle Unicode in zephyrs, we probably just want to
assume everybody sends UTF-8 (especially since python-zephyr doesn't seem to
expose the charset field...).
Add Unicode character lookup (Chiron-#22)
Support "Linerva" tickets (Chiron-#15)
Add etherpad.mit.edu's Trac (Chiron-#29)

We don't use the "etherpad" name because the SIPB etherpad Trac is so tiny it
seems reasonably likely we'll want "Etherpad #1234" to mean "upstream Etherpad
ticket #1234" at some point.
Ignore matches that are strictly contained in other matches (chiron-#11)

Signed-off-by: Anders Kaseorg <andersk@mit.edu>
Remove superfluous is_personal definition

Back in 7019556, I added an is_personal function so that MIT class numbers in
personals would produce a response. By the time 726fef6a came around and I
wanted to disable the timeout for personals, I'd apparently forgotten, so I
added an identically-named equivalent function. This punts the newer one.
Default tracker in instance for personals

On test classes, we accept a default tracker in the instance. When looking up a
bunch of tickets from one project, this behavior is quite useful, so broaden it
to personals as well. Fixes Chiron-#24.
Improve unicode compat with old python-zephyr

Old python-zephyr (anything before 8b756475cdb2 in 2011, which includes
scripts' 2009 version) automatically decodes messages as UTF-8. Decoding twice
is bad, so only decode if the zephyr body isn't already in unicode.  This fixes
a crash when chiron-on-scripts receives a zephyr containing Unicode.
More useful diagnostic output

When we added "No ticket found" zephyrs (commit 92b9a60), we made a message get
printed for every zephyr we processed.  Unfortunately, it's a really useless
message. This adds a message for every zephyr with the time, class, instance,
sender, and recipient for better diagnostics.
Fix combo and SCIENCE

Commit eb7ace1075 effectively requires that all matchers have at least one
group. For almost all of them, this was already true. For -c assassin's "combo"
(and "combination") and -c axs's "SCIENCE", however, this was not true. This
adds a superfluous group to each of those to restore functionality.
Force recipients to (byte) strings

Commit 8db28dea52 forced zephyr bodies to always be in unicode, but that
resulted in CC'd personals trying to reply to recipients specified as unicode
strings, which doesn't work. This converts them to byte strings.
Basic multiprotocol support for chiron
Add Zulip support to Chiron (Chiron-#31)
Ignore .pyc files
Expunge zephyr references from the core code
Add no-zulip instructions
Fix markdown in README

Apparently, markdown only supports two levels of headings, and doesn't handle a
third well.