Initial commit.
Uses ListLike as arguments for Trie function.

This allows to pass arbitrary list-like containers, e.g Lists,
Vectors, Texts, ByteStrings, etc.
Implements quirks for lowercase/uppercase transitions.
Derives Generic instance for Trie type.
Adds Binary instance for Trie type.
Adds Trie.branches and some re-exports.
Implements search algorithm for Edit Trie.
Enables list streaming in function searchBestEdits.
Enables optional cutting in function “Spell.Edit.bestEdits”.
Adds haddock documentation.
Code cleanup in reversal detection functionality.
Makes “Spell.Edit.searchBestEdits“ more debuggable.

The old behavior of searchBestEdits is provided by the new function
searchBestEdits'. Now searchBestEdits returns the values, too.
Improves lowercase/uppercase transitions for defaultPenalties.
Improves lowercase/uppercase transistions for confusionPenalties.
Doesn’t force reversals if reversal is possible.
Swaps tuple in result of Spell.Edit.searchBestEdits.
Adds new function “Spell.Edit.bestEdits'”.
Adds documentation for some internal functions.
Makes “Spell.Confusion.makePenalties” more clear.
Fixes a inconsistency between code and documentation.