Fixed FunctionNeverReturnsIssue

Refactored the ReachabilityAnalysis visitor (based on `IAstVisitor<bool>`) -- it's much more readable now (no manual stacks!)
Fixed a few bugs in ReachabilityAnalysis - notably when working with if statements or switch statements.