Fixed OO construction of word_dictionary.py .

Specifically, moved access of word_list and exclude_list from dunder vars
to single underscore vars (Python's "protected").
Clarified spec for word_dictionary lookup methods.

Clarified that look-up performed (for both lookup and exlusive_lookup) should
be case-insensitive.
Ensured that all the entries in the dictionary are lowercase.
More thorough tests for word counting functionality.

- Added a testcase string ("xkcd") that should not be in any normal dictionary.
- Made use of wordbook_sanitize function in more places in the code.
- HashTally now uses the word_dictionary attribute to check if the word is in
  the dictionary before considering it counted.