Implement visitor pattern
Implement pre and post order traversal
Implement HasVisitor, has_symbol() and tests
CMake: add visitor.h to HEADERS
Refactor a little bit
Start implementing coeff()
Rename HasVisitor to HasSymbolVisitor

Because the current implementation only looks for symbols. Later we might also
implement general expressions via a new visitor class.
Merge branch 'master' into visitor

Conflicts:
	src/tests/basic/test_basic.cpp
Add a test for sin
Implement accept for all classes
Move pre/postorder_traversal to visitor.cpp
Add the rest of functions to Visitor
Implement EvalDoubleVisitor
Add accept methods to Integer, Rational, Complex
Add visit() for Integer
Add a test for eval_double()
Fix a typo in Rational
Add better conversion from mpz_class to double
Implement Rational handling and test it
Implement handling of Add and test it