Refactor. Adding default behavior for tunnels.

Note: Here I added some default behavior for tunnels. All new tunnel
should embed the base struct and *ONLY* override the matter methods.

Signed-off-by: Madper <madper.xie@canonical.com>