! io: abort connection on idle-timeout, fixes #539

Also make sure idle-timeout only triggers if no write is currently
pending.