Allow IPv6 to be compiled via `#define`

Switching between IPv6 and IPv4 has in the past been done with a Makefile variable that has selected what source files to compile. This has caused problems when switching between IPv6 and IPv4.

This patch adds a number of `#ifdef`s in the IPv6 code to allow the code to be selected with a  `#define` instead. 

Also, the patch moves the set of uip files into its own `Makefile.uip` to remove some of the clutter from the top-level `Makefile.include`.