This was my first plugin. Looking back on it, it was full of bad
design decisions (and I have elected to keep most of the user-facing
ones for backwards-compatability). This merge tries to uncrustify the
plugin by standardizing the documentation, removing much unecessary
code, reorganizing the internal structures, and removing references to
my own made-up terminology.
Before this commit, Popup.window would only be set to `nil` if there was
a valid window found. It is proposed that `nil` shuold be set especially
if there is no valid window found, as an invalid window value shouldn't
be kept around.