Nickname equality subsystem.
This component is responsible for deciding whether two nicknames
refer to the same person, for the purposes of
tell et al. Nickname
equality must be monadic because it uses mutable state maintained
by the link and
Also provided is a concept of polynicks (by analogy to polytypes);
polynicks can refer to an (open) set of nicknames. For instance 'tell
*lambdabot Why does X do Y' could tell a message to anyone who has
identified as a lambdabot maintainer. A polynick consists of a
bar-separated list of (nicks or open terms); an open term is like a
nick but preceded with a star.
Determine if a nick matches a polynick. The state is read at the point of binding.
Lookup (using a polynick) in a map keyed on mononicks.