Should solve most of #1

- generateCrossword() has been broken up in many smaller functions.
- Instead of allowing any word length between two values, now each possible word length is checked separately. We generate a list of acceptable word lengths for the starting position and then we explore words that have these lengths and fit the position. This helps with #1.
- Throw exception each time the process attempts to overwrite a pre-existing character (helps with debugging #1).
- maxRounds and crossword size changed again for ease of debugging.
- Suppressed #2 by removing dummy chars from conditions.
- #4 condition could never be true before; now it can (for better or for worse)
- Prints message for starting and ending dictionary import and crossword generation.
- Explicitely close dictionary file.