Don't update hint list with changes from the program (like those from hint insertion).

Also make sure to check with other providers when a character ends the current hinting session.

This fixes issue #2586 and #2601.

@iwehrman You need to review this pull request. *DON'T MERGE IT* until Ian has a chance to review.