add instance IsString [Word8]

Add IsString instance for [Word8] to make it easier to write specs
(and probably other things).
add instance ToJSON Base64Octets

Base64Octets will be used for internal representation of JWS
Payload, so add the missing ToJSON instance.

Also clean up the base64url pad/unpad functions.
JWS: implement new JWS JSON Serialization

The JWS JSON Serialization changed in a recent revision to push the
protected header(s) down into each "signature" object.  Implement
this new format and add some specs while we're at it.

Particular highlights include:

- Headers sum type that enforces presence of either a protected
  header, an unprotected header, or both (parsed using alternatives)
- Switch from type Payload = String to Types.Base64Octets
- extract signingInput :: Headers -> Type.Base64Octets -> String