Added Logger class
Dictionary.getDictionary() would consistently throw null due to the
way in which init() handled DictionaryPatternException.

This commit separates init() from getDictionary()
Updated Dictionary.generateWord() to take an argument containing the maximum permissible length
Difficulty enum now stores
    - maxSteps: Maximum optimal steps between two words
    - minSteps: Minimum optimal steps between two words
    - maxWordLength: Maximum permissible word length per difficulty
Working on getting WordLadder to work
DictionaryParser now converts all keys to lowercase
Fixed NullPointerException in Dictionary.generateWord()

Replaced Dictionary.random field with Math.random() calls
Working on optimizing WordLadder