Provide default implementation of accept method

With the default implementation, the AST traversal is more thorough, and the code is shorter. Also, a leave method is added to the Visitor and called from accept method to give more power to the traversal