protocol: switch interface strings to use an interface ID instead
Replacement for !167 (merged), cc @jadahl
This MR switches the string-based interface specifiers (e.g. "ei_pointer") to an int-based one.
Each interface has a fixed "iid", starting at 0. We could automatically number it based on the protocol.xml file but let's be explicit about this.
This iid is used instead of the interface name as string.