Rewrite buff tracker to understand worlds and be easier to configure.

The original implementation mixed up the code and buff definitions,
which made it hard to understand. It also had the unfortunate habit of
/echo'ing messages to the foreground world instead of the world which
triggered the message.

The rewrite scopes buffs to the world they're defined on, and also
provides some helper macros to quickly define when a buff starts and
ends. As a bonus, all the helper triggers are now invisible by default,
which makes /listdef much cleaner.
Fix broken timestring calculation and broken buff name lookup.

Timestring calculation was broken since /rassoc overrites %{P1} and
%{P2}. Instead, capture them into local variables before invoking
/rassoc.

Buff name lookup has been fixed as well; /mapassoc returns the entire
key name, which includes the table name, so the table name needs to be
filtered out before looking up the buff name.