Refactor the CMake files

This PR introduces 3 different ways to specify an external library:

1. `cmake -DGMP_DIR=$HASHSTACK -DARB_DIR=$HASHSTACK -DWITH_ARB=yes -DFLINT_DIR=$HASHSTACK -DMPFR_DIR=$HASHSTACK .`
2. `cmake -DGMP_DIR=$HASHSTACK -DARB_DIR=$HASHSTACK -DWITH_ARB=yes -DFLINT_INCLUDE_DIRS=$HASHSTACK/include -DFLINT_LIBRARIES=$HASHSTACK/lib -DMPFR_DIR=$HASHSTACK .` (See the Flint library options.)
3. `cmake -DWITH_ARB=yes -DCOMMON_DIR=$HASHSTACK`

TODO:
* [ ] agree on the design
* [ ] document the conventions somewhere (README or else).
Well, once Arb is fixed, then it will be required. If we remove it, then csympy will break with newer Arb. Second, that is the right way to include things, so we should do it the right way, and only add a temporary workaround below at the line 71 with the idea, that it will get removed once Arb is fixed.