improve detection of valid block openers

remove the test for if|unless in the skip function.

move the test for comments to the skip function.

allow block openers to be part of an assignment by checking for '.* ='
immediately before the keyword.
this allows constructs like:

var = if flag?
  1
else
  2
end

while skipping suffix conditionals:

var = 1 if flag?
fix infinite loop bug in class/function selection