canopen: Enhanced SDO decoding

* Move sdo dissection to separate function

  Added dissect_sdo() function to handle the more complex SDO dissection.

* SDO command specifier decoding

  Decoding of both client and server command specifier for SDO transfers
  according to CiA 301 Chaper 7.2.4.3.

  Note: Fully decoding block transfer frames is more complex and not supported
  yet.

* basic SDO abort code decoding

  SDO abort codes as specified in CiA 301 Chapter 7.2.4.3.17 (Table 22).

* Basic value ranges for object dict index parameter

  Object dict ranges as specified in CiA 301 7.4.1 (Table 41)

* cs-based multiplexer and data decoding

  A data width of 4 byte is valid only for expedited transfer and a
  multiplex value is present only in initialisation messages.

  This patch now handles also normal sdo segment data.

  Reference: CiA 301, Chapter 7.2.4.3.3 and 7.2.4.3.6

Change-Id: I37005894082d62eed1ddd85e09e3676aa3af8222
Reviewed-on: https://code.wireshark.org/review/5504
Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
Petri-Dish: Alexis La Goutte <alexis.lagoutte@gmail.com>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Michael Mann <mmann78@netscape.net>