Improve exception management.
Remove almost all std::exit calls.
Now, one should use one of the provided exceptions.
-
NormalError: an error which is related to the use of the code. It is not related to a bug
-
NotImplementedError: an error related to a functionnality that is not avaliable yet
-
UnexpectedError: an error related to some unexpected state. This is related to a bug
Closes #13 (closed)