hal/include/hal_varg.h: move variable macros to new file

This will allow for ease reuse of the variable
argument macros expansion
hal/sm_io/*/rw_param.h: remove redundant macros

They are now in a separated file located in
"hal/include/hal_varg.h"
hal/include/hal_assert.h: add optional error setting

Now, we can set an optional error (already declared)
variable. This is useful when return errors through
multiple subsystems, where error conversion is
necessary.
various: add variable arguement ASSERT macros

This is bad! I had to add the variable arguement list
to all files that used the ASSERT macros in rder to support
the ioptional variable setting. There is a need to fix this
properly.

This is the first commit towards fixing issue #15.
hal/*: convert error handling to a more unified approach

Now, whenever possible we use the new error handling,
in which we can set an error variable inside the ASSERT
macros. This should easy the code maintainability.

This, together with commit f1a961df fixes issue #15.