KeyParameters: use choice instead of pattern guard

Use Data.Attoparsec.Combinator.choice instead of pattern guard to
decide whether to parse a private or public key.  Pattern guard is
still used to decide between key types (i.e. EC vs RSA vs ...).

This should result in more efficient parsing and does result in less
code (parameters need only be specified once).  On the downside,
choice seems to suppress error messages**.

** if multiple parsers fail, whose error would it show?  So this
   behaviour seems reasonable.