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)