First functional version

The tunnel is fully functional yet a still slow. The maximum speed
acheived was 600kbps on a local test. Also, the code needs a lot of
refactor.
Because of the complexity of the problem, the minimal version needed a
lot of code.