Assigning a typed nil to the error interface gives a non-nil value.
That breaks the common pattern `if nil != nil { ... }`.
To avoid this problem, NewError should return an interface.
* Internal modules return only their own errors. All downstream errors
are converted. In this case, the module needs to check only N-1 level
errors.
* Do not convert errors from internal functions. They must return the
correct errors.
* When converting an error with loss of context, it is necessary to
write the previous error to the log.
Signed-off-by: Gladkov Alexey <agladkov@redhat.com>