Merge accelerators in Mozilla .properties files

Fixes bug 115.
Align dtdfile.makeindex() with that of base class

To TranslationStore.makeindex() populates, among others, an “id_index”
dict, while dtdfile’s just populates an “index” and the code in
accesskey module expects the later, so align them together to avoid the
hack in propfile.makeindex()from the previous commit.
Simplify tests

After the previous commits, TestProp2PO.prop2po() can take an optional
personality kwarg, so use that.
Docs: document properties files access key changes
Generalize entity encoding/decoding code

So that it can be used with custom set of entities.
Handle nonentities at end of string

We were passing through things like ”&copy ” (notice the space) but not
“&copy” (no space) which was completely dropped from output.
Don’t touch existing entities in entityencode()
Use quote.entityencode()/entitydecode()

They provide more sophisticated handling of entities than blind replace,
will allow us to handle the ampersand properly.
Support &amp;

The roundtrip test for “&amp;nbsp;” is failing, need to find out how to
fix it or whether it is a valid input or not.
Fix DTD tests

Make sure strings like “&amp;nbsp;” survive roundtrip conversion by
leaving “&amp;” unchanging when decoding it will result in a new entity.
Docs: document changes to DTD files entities
accesskeys: add whitespace to combine() for reasability
accesskeys: combine using correct case

We always thought, or claimed that we combined accesskeys based on
prefering the case before using an alternate case.

It seems that our code actually prefered uppercase and then would try
lowercase.  Thus this string:

"Close Other Tabs" combined with an accesskey of "o" would result in
"Close &Other Tabs" because capital O would win even though lowercase O
was present.  The correct combineation should have been "Cl&ose Other
Tabs", preferring the correct case before the alternate case.
docs: Add note to bump version up post release
Remove copyright statement (I abstain from any personal IP rights! Thanks for maintaining this. Dominic)
Revert "Cleanup: Use the @ syntax for some properties"

This reverts commit d211e0de47114d3e2b8bc31ef0f7f9fc24355fb5.
Revert "Cleanup: Rename isblank to is_blank and convert to property"

This reverts commit 199cf7926fffd5dd7ee1838cb0de0f97bf9032dd.

This gets us back to before we started altering the TTK API and deprecating
the changed methods.
Add deprecated decorator to easily mark deprecated functions and methods
Use the new deprecated decorator instead of custom deprecation code
fn tests: functional test framework

make test-functional - runs our tests
run_tests.sh - a harness that runs all other test_*.sh tests
test.inc.sh - common code and functions for tests