Tentative structure [WIP] for interfacing Arb

This PR can be used to facilitate discussion on how to interface Arb in CSymPy. If this doesn't require a lot of polishing, let's continue future work on this, else start-over on a different PR. 

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.
Now we should convert y to a CSymPy type. Following are some of the methods supported in Arb to convert `arb_t` type into other types:

+ void arb_get_fmprb(fmprb_t y, const arb_t x)
+ void arb_get_mag(mag_t z, const arb_t x)
+ void arb_get_interval_arf(mpfr_t a, mpfr_t b, const arb_t x, long prec)
+ void arb_get_interval_mpfr(mpfr_t a, mpfr_t b, const arb_t x)

So, I think we have to use something like MPFR in CSymPy for representing floating point values to proceed beyond this point.
(Just adapting the comment from source file)