Move heterogenous->heterogeneous to the rare dictionary

"heterogenous" is both a valid word with a distinct meaning,
and an accepted alternative spelling of "heterogeneous"
(see <https://en.wiktionary.org/wiki/heterogenous>)
so it is removed from the main substitutions dictionary.

However, "heterogenous" is much rarer in practice than "heterogeneous":
- [google ngram viewer](https://books.google.com/ngrams/graph?content=heterogenous%2Cheterogeneous)
- [4M search results](https://www.google.com/search?q=heterogenous) for "heterogenous", vs
  [111M search results](https://www.google.com/search?q=heterogeneous) for "heterogeneous"
...so it is added to the rare dictionary as word that is valid, but likely to be a typo.
diff --git a/codespell_lib/data/dictionary.txt b/codespell_lib/data/dictionary.txt
index a9a7b78..14c04e4 100644
--- a/codespell_lib/data/dictionary.txt
+++ b/codespell_lib/data/dictionary.txt
@@ -14558,7 +14558,6 @@
 hesiate->hesitate
 hesistant->hesitant
 hestiate->hesitate
-heterogenous->heterogeneous
 hetrogenous->heterogeneous
 heuristc->heuristic
 heuristcs->heuristics
diff --git a/codespell_lib/data/dictionary_rare.txt b/codespell_lib/data/dictionary_rare.txt
index 9c443e3..7f2a8c1 100644
--- a/codespell_lib/data/dictionary_rare.txt
+++ b/codespell_lib/data/dictionary_rare.txt
@@ -63,6 +63,7 @@
 guerilla->guerrilla
 guerillas->guerrillas
 hart->heart, harm,
+heterogenous->heterogeneous
 hided->hidden, hid,
 hist->heist, his,
 hove->have, hover, love,