Comprehensive Link support

This implements #267 with a complete, well-typed API for constructing sane Link headers.
It's up to you, but I sometimes find it useful to limit the number of names in one package to cut down on import tax by putting related names inside an object that contains instances. This also works well for implicit resolution in the recipe of a type class trait + object with same name containing instances. Something similar here may be defining the class Media then an object also named Media containing Media type instances and then reference them with something like `link.Media.Screen` ect. Same may be useful for Rel instances. Up to you. There's a lot of names in this package.