Update HAL Diagrams
Make all functions `abstract`. I think C++ round-trip would
create pure virtual functions.
Fix some includes, also added IOCTLADDR
`IOCTLADDR` is the control register. The control register
is used to set a port bit to output or input.
Fix more includes
Add implementation and header of `iowrapper`
This class is based on `abstract_inout` and talks to the hardware.
It wrap the access to `in8()` and `out8()` of `hw/inout.h`.
`HWaccess` can have a pointer to a `abstract_inout` object
Rename `out8()` and `in8()` of `abstract_inout`
Due to a name conflict with `::in8()` and `::out8` the name
of both functions has changed to `inbyte()` and `outbyte()`.