some refactorings

- parser.cpp
  - remove unused header
- stringize_ast.cpp
  - more comments
  - improve names of internal member functions
  - fix condition to check std::shared_ptr
check if T is AST node
more generalized helper; visit_nodes_with_predicate
revert 0fddb55

because it is not for normal expression but for type expression
add to_string() for operator symbols
add more convenient typedef, remove unused header
add a rule for 'mult_expr' node
add macro to construct a rule with locals
more visible indentation
add node and rule for additive_expr
remove trailing newlines
add node and rule for 'shift_expr'
remove trailing newline
fix symbol of shift_expr
add node and rule for 'relational_expr'
add node and rule for equality_expr
remove useless parens
can't do DRY because of SEGV...