Issue #7 and several other improvements

This pull request includes new commits and all commits from the other pull request.

* Makes cursor invisible and restore it after running
* Fix Issue #7
* Makes easier to write custom **spinners**
* Makes tests run faster
* Fix the freezing when some exception is raised inside the spinner thread

I think you could make another branch something like 0.2.0-rc so that we can merge the changes on it without touching master until release date.