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