Improves SelectedProtocol enum to avoid boilerplate on subclasses

NPN server providers return a String version of the negotiated protocol
and the getProtocolByName method allows to easily get an instance of
the SelectedProtocol enum and avoid the need for a switch statement in
each subclass to match the String against the enum value.
Cleanup and remove get prefix of method to be more inline with our API
Merge remote-tracking branch: upstream/master