Big diff, little functionalities.

This diff reorganize libtuntap files. Now each API resides in its own file,
with system-dependent code in a static tuntap_sys_* function.

I also try to check against features rather than against operating system
name, but it's not always easy or possible.

The only exception for the moment is tuntap_start(), which still need an
external tuntap_sys_start().
I will deal with that in the future.
Fix an include for BSD systems
tuntap_set_hwaddr() generates local MAC addresses