Implemented storage backends

This patch is a first try at implementing a mechanism to provide
storage backends in replacement of the default one.

This is done through the modbus_storage_backend_vfptable which defines
all functions that needs to be implemented by the callbacks.

The structure passed to modbus_reply is otherwise opaque and passed back
to the callbacks.

The default backend has been updated to be compatible with these changes.

Note : this patch breaks the ABI but tries to keep source compatibility
fix address range limit for modbus_mapping_read_input_registers
cody style clean up
Implement better error handling

This handler can now return any modbus exception and it will be handled
correctly (inkluding printing relevant debug-messages).

Credit where credit is due:
Daniel Kirkham suggested this and provided example code that was basically
copy-pasted into the existing solution.