m_invisible: Refactor and improve hiding by adding an option for overriding whois and mode.
Also implements a safety mechanism to prevent accidentally talking or setting modes when hidden.