Many changes and new methods

replaced many starting visits with calls to supers methods to avoid
duplication
created a catch all method for visiting binary expression nodes and
added many calls to it
Implemented helper methods