Spinner (**rebases spinner branch**)

Finish the spinner behavior.

Need to replace text with a CSS spinner (@PixelJanitor has been pinged).