Depend on struct instead of lpack

The struct module is actually available either for Lua 5.1 and 5.2.
lpack was the only dependency preventing lua-websocket to be compiled
for Lua 5.2.
i am a bit performance paranoid. the local is for saving table accesses at spots which are supposedly run very often. sometimes i even do it for table/object methods, e.g. 

```lua
#!/usr/bin/env lua
local socket = require'socket'

local s = 'hello'
local n = 10000000

print('with table access')
do
  local t1 = socket.gettime()
  for i=1,n do
    s:upper()
  end
  local dt = socket.gettime() - t1
  print('dt=',dt)
end

print('---------------------')
print('without table access')
do
  local supper = s.upper
  local t1 = socket.gettime()
  for i=1,n do
    supper(s)
  end
  local dt = socket.gettime() - t1
  print('dt=',dt)
end

```

On my macbook, the second variant is about 25% percent faster, even using luajit!