Revert "reverted changes to porter stemmer, because they inadvertently introduced different behaviour of the stemmer"

This reverts commit 2adb08c320052e82366684893600024fb0515a96.
fixes to earlier porter stemmer refactor
added special case to porter stemmer that avoids exceptions being thrown for a handful of perverse non-words
More tkinter-related fixes:

1) use lower-cased tkinter module name (uppercased may fail in Python 3.x on case-sensitive filesystems, and lower-cased tkinter it is fixed by nltk.compat for Python 3.x);
2) imports in nltk.sem.drt_glue_demo are fixed (I didn't try the demo, but the code looks OK - I think it should work in 3.x as-is)
up-to-date urls for megam
Merge pull request #370 from kmike/megam-is-moved

up-to-date urls for megam
Demo functions for Baum Welch are fixed. See GH-69, GH-100.

They were broken in this commit: https://github.com/nltk/nltk/commit/9738e3e5027361255fc151b0dc7e1dd59ebeced2
PY3: fix nltk.classify.utils.names_demo (thanks Janosch Gräf for the report and a patch)
PY3: pickling of FreqDist is fixed (thanks @jgraef)
Merge pull request #369 from kmike/more-tkinter-fixes

Small tkinter-related fixes
HMM: avoid O(N) lookups. This makes HiddenMarkovModelTrainer.train_supervised 30x+ times faster.

Note: demo_pos() execution time is currently dominated by entropy calculations.
cleanup HMM demo functions; tests for HiddenMarkovModelTagger._forward_probability
TST: more tests for HiddenMarkovModelTagger
simplify creation of _NINF arrays in nltk.tag.hmm
fix Baum-Welch probability calculations for multiple observation sequences
small demo improvements; make HiddenMarkovModelTagger.test use standard map/itertools.chain instead of LazyMap & friends
HiddenMarkovModelTagger.best_path uses a cache - it must be reset if transitions, priors or outputs are updated
HiddenMarkovModelTrainer.train_unsupervised must use the same states and symbols as model.

They can be different even if the same values are passed to constructor because HiddenMarkovModelTagger deduplicates them (and change their order).
Merge pull request #364 from ExplodingCabbage/master

Same improvements to the Porter stemmer as before, but without the bugs
Even if 'model' is not passed, we should use states and symbols from newly created model (because they may be different).