hal/ll_io/ll_io.c: remove call to registered release method

This method should only be called once by the owner
of this LLIO instance.

This fixes #28 github issue.
hal/ll_io/ll_io.c: add unregister_ops () method

This is just to keep the consistency between register
and unregister methods. Effectivelly, this was not necessary,
but it adds a more uniform way creating/destroying the LLIO
instance.
hal/sm_io/rw_param/*: add better error checking

Now, the GET and SET macros have error checking and
"return" the error to the "caller". The sematic is changedm
but for now, the only file using the GEt and SET macros was
itself. So, no refactoring was necessary.
hal/*/ml605/board.h: change CPU_CLOCK to SYS_CLOCK

This makes mre sense, since we are not using a CPU
inside the FPGA. This clock refers only to the
Wishbone FPGA internal clock.
hal/*/rw_param/rw_param.h: change error checking

We can't use the ASSERT macros, as the goto labels
would be repeated throughout the same function.
hal/sm_io/protocols/*: add new optional SMIO layer

Started the implementation of the SMPR layer, with
SPI interface, which sits on top of the SMIO. This
layer implements some customary protocols commonly
found, such as: SPI, I2C, Onewire, GPIO and a Bypass
mode.
hal/sm_io/sm_io.mk: update SMIO makefile
hal/include/hw/*: add SPI register definitions
hal/debug/debug_subsys.h: add SM_PR debug subsystem
hal/include/hal_opts.h: add SM_PR as possible debug
hal/*/protocols/sm_pr.c: add missing wrapper functions
hal/**/afcv3/*: add new static register layout for AFCv3

Also, we have changed the way we specify the devices. Now,
we have only the offsets to a generic base address. In this way,
we can instantiate various SMIO with the same name service, apart
from an ID at the end, such as: BPM0:DEVIO:SWAP0, BPM0:DEVIO:SWAP1
and so on.
hal/**/ml605/mem_layout.h: update ML605 static layout

As we are going to use a new SMIO specifier, we update the
old ML605 macro definitions here.
hal/hal_utils/hal_utils.*: add new concat function

Now, it is possbile to concatenate 2 or 3 strings
with a separator inbetween the first and the second
strings. This is a very restrict case, but it is
the one we need.

TODO: make this function more generic
hal/sm_io/*_bootstrap.*: add instance ID parameter to SMIO bootstrap

Now, this allows us to instantiate various SMIO with the
same base name service, apart from the ID appended at the end
of the service, such as: BPM0:DEVIO:SWAP0, BPM0:DEVIO:SWAP1,
and so on.

This is part of the github issue #23
hal/dev_io/*: export new DEVIO paramters to API

Now, we must specify the base SMIO core address and its
instance. In the future, these parameters will be set
by the SDB subsystem.

This is part of the github issue #23
hal/dev_io/dev_io.c: add new DEVIO parameters

This is part of the github issue #23
hal/sm_io/sm_io.*: add raw version of the SMIO ops wrappers

There are some cases that we need to write to the LLIO
without ORing the SMIO register address with the SMIO base
address, such as when we are reading from BAR2 (DDR3 currently).

This is part of the github issue #23
hal/sm_io/modules/*: update register names

Now, we are using just the offset from a SMIO base
address which is set on SMIO boot time.

This fixes #23 github issue
.ycm_extra_conf.py: update YCM include dirs