New enum "InternetProtocol" for supported IP protocols replaces "scheme"

The legal values for internet protocols (here known as schemes) should be defined as an enum, not as `String`. This gives us type safety and some improvements in parsing and stringification.
See #70, `AccessMode`. 
In addition, _scheme_ is a misleading name. This PR replaces it with `InternetProtocol`.