Tentative structure [WIP] for interfacing Arb

Main changes:

+ Added method n() to `Basic` class which evaluates the instance by
  calling `eval()` function.
+ Two new files were added, `eval.h` and `eval.cpp`, which contain
  the functions for evaluating CSymPy types. These files contain main
  evaluation function `eval()` and support functions.
+ `eval()` is a if-else chain that calls the correct support function
  by checking the input instance type.
Move EvalDoubleVisitor to eval_double.h/cpp
Put EvalDoubleVisitor into .cpp
Simplify the EvalDoubleVisitor implementation
Remove the old comment
Avoid instantiation of EvalDoubleVisitor

Add a comment explaining how it works. Now only one instance of
EvalDoubleVisitor needs to be constructed for the whole symbolic evaluation.
Add eval_double.h into headers
Wrappers for ntheory
Merge pull request #300 from certik/eval

Put EvalDoubleVisitor into its own file
Move pre/postorder_traversal into visitor.h/cpp
Implement preorder_traversal_stop
Rename 'ulong' to 'unsigned int'

That more closely follows the standard.
Merge pull request #301 from certik/visitor2

Polishing of visitors
Merge pull request #303 from certik/ulong

Rename 'ulong' to 'unsigned int'
Remove the comments
Merge branch 'master' into arb

Conflicts:
	src/CMakeLists.txt
	src/basic.h
Fix build error when arb is not installed
Basic structure for expression evaluation

Removed the if-then-else chain type of evaluation by visitor pattern.
Implement `visit` for Integer, Rational, Add

Add precision as a member(prec_) in EvalArbVisitor class and modify apply
and eval_arb to support it.
Fix typos in eval function declaration in eval.h