Ahh . . . this is public API. So if we do make it an enum then we need to make it a very public enum. I'm okay with that though.

Here's something annoying.
java.net.URL thinks a protocol is the same thing as a scheme: `http` and `https` (or `ftp` etc.). 
NPN thinks a protocol is a wire-level thing: `http/1.1`, `spdy/3`, etc.

I think the language in the RFCs is pretty clear, `https` is a scheme and `http/2` is a protocol. If we make the `Protocol` type public, we should have a section describing the difference between a protocol and a scheme.