Initial Commit
Create a tunnel service class for Linux

The tunnel service class is an abstraction for Linux that allows to get, add,
change and remove IPv6 tunnels.
Add simple tunnel service test application
Split the tunnel service into header and source
Make the tunnel service ip6_parameters class complete
Misc cleanup in tunnel service
Add templates for header, source and Jamfile

This avoids the inconvenience of having to copy from the top and bottom of
another file when creating a new one.
Add helper macros for undefined_bool to reduce repetitive code
Add alias in namespace opmip::ip for the boost::asio::ip address utilities
Add ip::prefix_v6, a IPv6 prefix class utility
Add a simple test unit for ip::prefix_v6
Import boost::asio::io_service to the opmip::sys namespace
Begin implementing basic_netlink_socket template

The basic_netlink_socket builds on top of boost::asio::basic_raw_socket. This
revision implements the basic Protocol requirements.

Since a Netlink socket can only work with one Netlink protocol, the Netlink
protocol family is a template parameter for the Netlink socket class. This
automatically makes distinct socket object types for each Netlink protocol.
Move the unit test code to the proper subdirectory
Add exception facilities
Add a simple test unit for exception facility
Fix missing include in basic_netlink_socket
Add typedefs for std::size_t and std::ptrdiff_t
Add an align_to utility

This utility will be needed for Netlink abstraction details.

Note in comments some fixes/todo's needed:
 - check the concept of Aligment or provide specialization for optimized and
non optimized cases. Currently where relying on the optimization which only
works for powers of 2, because its practically the only use case.
 - check the concept of Integral. This is trivial using Boost.TypeTraits.
 - add specializations for pointers.
Add a netlink frame class to map netlink messages