Add NFData instances for URI and URIAuth

These `NFData` instances are required to avoid orphan instances when you need to control memory leaks using `deepSeq`, `force`, etc., and one of your data types happens to include a `URI`.

This change creates a dependency on the deepseq library. That is quite safe, because deepseq is bundled with GHC. I omitted the upper bound on the dependency, because the library is extremely stable. The API of the `NFData` type class, which is all we are using, has not changed for almost four years. Since then, all version bumps of deepseq have only involved ancillary functions, not the type class itself.