Add Lua custom stream and visitor support

This PR adds full custom visitor and stream support for the Lua bindings. Example:

```lua
gs = gt.gff3_in_stream_new_sorted(gff3file)
cs = gt.custom_stream_new_sorted()
cs.instream = gs
cs.lowerbound = 1000
cs.upperbound = 14000
function cs:next_tree()
  local n = self.instream:next_tree()
  while n do
      if n:get_line_number() < self.lowerbound
        or n:get_line_number() > self.upperbound then
        break
      else
        n = self.instream:next_tree()
      end
  end
  return n
end
```
Due to Lua's lack of a real class system, the constructor simply returns an empty stream which can be filled by the user by adding fields and methods. The actual functionality is implemented by adding a mandatory `next_tree()` method, which must return a genome node or nil.

Similar behaviour for visitors. Example:
```lua
cv = gt.custom_visitor_new()
cv.i = 1
function cv:visit_region(fn)
  print(fn:get_seqid())
end
function cv:visit_feature(fn)
  print("feature number" .. self.i)
  self.i = self.i + 1
end
...
fn:accept(cv)
```

They should be fully interoperable with C streams wrapped as Lua userdata, e.g. GFF3 in/out stream. I will also add the _GtVisitorStream_ when I find the time.
Closes #328.