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).
This is not required because of line 71, right?