Improve detection of association and connection status

This better handles the case where a disconnect event was missed or when
it is processed twice. Additionally, it also sets the state to
disassociated when the NCM is disabled, or when a GS_LINK_LOST response
is returned.
Add GSModule::disassociate()