ensure the js script is injected only 1 time into the DOM

Injection is still async so the user should poll 'isLoaded' if they are
unsure if the API is yet available.  We no longer re-raise the script
load event as that felt too dirty, and in the long run we want to solve
this so the script is immediately available.