dtd: underscore is valid in entity names

We where failing is_valid_accesskey when entity name contained _ which
would remove a leading & and make the entity invalid.
dtd: optional expected makes cleaner roundtrip setups
accesskeys: test numeric keys
accesskeys: test combining non-ASCII keys

The function actually claimed to return Unicode but was converting to a
basestring.  So this also drops that conversion to basestring.
Merge accelerators in Mozilla .properties files

Fixes bug 115.
Simplify tests

After the previous commit, TestProp2PO.prop2po() can take an optional
personality kwarg, so use that.