Fix a bug in logging.cpp

In previous commit, new log levels were added without including them into
the string translation array. This change fixes such a bug that caused
memory access errors.
Changes on exception declaration primitives

As reported in issue #42, there were some problems derived from requiring
default constructors and uninitialized fields in exception construction.

This change replaces the exception declaring macros by new ones. The most
relevant difference is that, with these new macros, the exception objects
must be constructed with the values of its fields passed as argument. This
prevents uninitialized fields.