Refactor the whole library code for better testability

Instead of stuffing the whole code in lib/ into one big library,
separate them according to functionality:

- libCException.a: only CException code
- libiniparser.a: iniparser and dictionary (as before)
- libutil.a: utility functions and macros
- libgfunc3.a: everything connected to grid functions (transform, operators, I/O)
- libetai.a: code specific for reconstruction in ET (parameters, tiltangles, options)
             Maybe a candidate for a further split (ET and AI)