hal/*,libclient/*: change RW macros and trivial changes
hal/include/hal_stddef.h: add convenient container_of macro
.ycm_extra_conf.py: update to include new folders
hal/sm_io/*/swap/*: change windowing opcode name
libclient/bpm_client.*: expose ACQ timeout to API

Also, update windowing opcode name to match server.
examples/acq.c: add more sensitive timeout

Infinite timeout was not very sensitive.
hal/hal_utils/*_err.*: add more error codes
hal/dev_io/dev_io.c: fix wrong SMIO ID for AFCv3

New instances of the same SMIO must be spawn with different
IDs.
hal/msg/exp_ops/*: add new macros for manipulating arguments

This will be used for all SMIO functions in order to
gain access to received arguments. This should provide
an abstraction to the SMIO functions regarding the actual
structure of the argument.
hal/msg/exp_ops/*: add "guessing" functions for exported messages

This files hold specific fucntions for trying to identify
a exp_msg from a void * type. For this we use a tag field
at the begging of the structure.
hal/msg/exp_ops/ops.mk: update Makefile
hal/sm_io/sm_io_err.*: add new error codes
hal/sm_io/*_bootstrap.c: initialise TAG field in exp_msg
hal/sm_io/sm_io_exports.h: add macros for accessing SMIO function owner
hal/*/dispatch_table.*: add strong argument checking

This is a massive change on the dispatch table. Now,
we include a strong argument checking, with automatic
return value allocation on function insertion.
hal/hal.mk: hal_utils now depends on the exported message
hal/sm_io/sm_io.*: update to use new export system

Now, we use a new export system and must use the new dispatch table
API. Also, the response messages are unified and a single function
takes care of formating and sending the response message back
to client.
hal/sm_io/rw_param/*: use new macros and unified response message
hal/sm_io/modules/*: add new function descriptor structure
libclient/rw_param_client.c: update the response message format