Return errors whwn cursor position detection fails
Prior to this change there were several conditions that could cause cursor position detection to panic. This change adds error proper errors for each of these conditions.
Documents why the async / threaded reads concurrently with the cursor detection will never succeed correctly, and fixes the internal panics mentioned in #173
Includes !199