start implementing selection

DRY up cursor code (in the future, this function will be extended to
optionally not load the classic cursors); position handles relatively;
start implementing selection