ENH: visual.RatingScale better marker='hover'

now the marker changes in response to moving off the labels and back on
ENH: more efficient hover in RatingScale
ENH: another small efficiency in RatingScale

also helps the readability of the code
TESTS: fixed test for amended fitCumNorm
DOCS: rendering info elaborated
FF: Fixed glitch in elementArray rendering since new coordinates system

Was caused by a problem with ordering and reshaping
added progress on TheEyeTribe python interface

test files are in psychopy\iohub\devices\eyetracker\hw\theeyetribe\test

* Set TEST_WITH_DUMMY_SERVER = False to test with real eyetribe server.

* run the test:

python eyetribetest.py
Expand user_variables into individual columns of the session meta data
FF: ratingscale key handling
ENH: add autoDraw to class RatingScale

inheriting from BaseVisualStim still does not seem right, so just copy & paste a method here and there
DOC: RatingScale autoDraw doc string
RF: split BaseVisualStim into three classes

All test_all_visual/ tests are passing. New internal hierarchical structure:
- non-visual housingkeeping methods (MinimalStim) = the core of the core
- deprecated visual methods (LegacyBaseVisualStim)
- current visual methods (BaseVisualStim)

RatingScale benefits if it can inherit from MinimalStim, reducing code redundancy, look for another commit
RF: visual.RatingScale now inherits from MinimalStim

removes a lot of code redundancy while avoiding unnecessary visual methods in a RatingScale (if we were to just inherit from BaseVisualStim)
ENH: Updated eyetribe eye tracker interface

* based on work Zaheer and I did today.
* NOT USABLE YET; but will only be another couple weeks before
integration with iohub is done and tested I would think.
Cool!
BF: fix failed string splitting for PR650

Presumably we used to import the string module, but this shouldn't be
necessary. (And Jon hasn't had a PR650 for a while so the code has gone
untested)
RF+DOC: basevisual minor RF, tweak comments and doc strings
DOC: comments and docstrings in basevisual.py
BF: getMsPerFrame was not passing along the showVisual request
The ip_id_num is now grouped by (experiment_id, session_id) before enumerating. This should help merging etc.
Added the ability to retain certain columns, such as ip start times, in the filtered data