use a timer so we send fewer requests to the server - now plugin waits until user has stopped typing for 500ms
do all checking in a background thread for better interactive performance