* Added scrolling with scroll wheel on mouse.
* Added scrolling with vim style j/k keys.
* Changed scrolling so that it is more smooth and the whole screen is
not redrawn each time
* Changed channel keyboardQueue to a buffered queue, so there are not
too many scroll requests, and the draw commands can be done once the
queue is empty.
* Added UpDownJump in profile, so user can set how much PgUp/PgDown jumps
* Have not tested with a _huge_ number of stocks in ticker, probably
worth doing
Attempting to load an invalid config file will wipe the existing config, leaving the user with an empty config.
This change adds a check when an invalid file is loaded, and asks the user if the invalid config file should be overwritten.
If the user chooses `yes`, then the default config is loaded instead, and the existing config will be overwritten with it.
If the user chooses `no`, then the program exits.
Note this is intended only for the "interactive" mode (the only one existing right now). If and when we go forward with the suggestion in from issue #88, there should be no prompt, just an error message on stderr.
* Does not save profile in the SetFilter function.
* Saves profile on exit (exit from main loop).
* Clears filter string if it is found to be invalid in the Apply
function.