Make more testable

By adding an internal writer field to the spinner, the test can set it to output to a buffer that can be inspected for expected output, allowing tests to give better answers. 

Also could allow for API change to permit having a spinner on stderr if desired.

I didn't convert all of the tests yet due mostly to it being late - either way, I think this is better than what had been there at very little complexity cost.