add option to delay loading spinner

this simplifies toggling the spinner in cases where it is undesirable to
flash the screen if the option doesn't take very long. the calling code
can still trigger loading, and if it is removed before the timeout
nothing changes on screen