Implement iso operators 'clnp, 'esis' and 'isis'

This pull-request depends on the parse-optional-int pull request.

**clnp**

BPF code:
```
(000) ldh      [12]
(001) jgt      #0x5dc           jt 7    jf 2
(002) ldh      [14]
(003) jeq      #0xfefe          jt 4    jf 7
(004) ldb      [17]
(005) jeq      #0x81            jt 6    jf 7
(006) ret      #65535
(007) ret      #0
```

Lua code:
```
return function(P,length)
   if not (18 <= length) then return false end
   local v1 = ffi.cast("uint16_t*", P+12)[0]
   local v2 = bit.rshift(bit.bswap(v1), 16)
   if not (v2 > 1500) then return false end
   do
      if not (v1 == 8) then return false end
      local v3 = ffi.cast("uint16_t*", P+14)[0]
      if not (v3 == 63743) then return false end
   end
   do
      if not (v1 == 8) then return false end
      local v4 = P[17]
      do return v4 == 129 end
   end
end
```

**esis**

BPF code:
```
(000) ldh      [12]
(001) jgt      #0x5dc           jt 7    jf 2
(002) ldh      [14]
(003) jeq      #0xfefe          jt 4    jf 7
(004) ldb      [17]
(005) jeq      #0x82            jt 6    jf 7
(006) ret      #65535
(007) ret      #0
```

Lua code:
```
return function(P,length)
   if not (18 <= length) then return false end
   local v1 = ffi.cast("uint16_t*", P+12)[0]
   local v2 = bit.rshift(bit.bswap(v1), 16)
   if not (v2 > 1500) then return false end
   do
      if not (v1 == 8) then return false end
      local v3 = ffi.cast("uint16_t*", P+14)[0]
      if not (v3 == 63743) then return false end
   end
   do
      if not (v1 == 8) then return false end
      local v4 = P[17]
      do return v4 == 130 end
   end
end
```

**isis**

BPF code:
```
(000) ldh      [12]
(001) jgt      #0x5dc           jt 7    jf 2
(002) ldh      [14]
(003) jeq      #0xfefe          jt 4    jf 7
(004) ldb      [17]
(005) jeq      #0x83            jt 6    jf 7
(006) ret      #65535
(007) ret      #0
```

Lua code:
```
return function(P,length)
   if not (18 <= length) then return false end
   local v1 = ffi.cast("uint16_t*", P+12)[0]
   local v2 = bit.rshift(bit.bswap(v1), 16)
   if not (v2 > 1500) then return false end
   do
      if not (v1 == 8) then return false end
      local v3 = ffi.cast("uint16_t*", P+14)[0]
      if not (v3 == 63743) then return false end
   end
   do
      if not (v1 == 8) then return false end
      local v4 = P[17]
      do return v4 == 131 end
   end
end
```