tun(4) and tap(4) share the same general management interface and have a lot in common. Bugs exist in tap(4) that have been fixed in tun(4), and vice-versa. Let's reduce the maintenance requirements by merging them together.
Many of the early differences are carried in the tun_driver introduced here. The cdev methods are basically identical between the two; L2 versions of read/write are pulled over from tap(4) to keep it simple for now.