support decoding of enumerated values.

I'd like to decode ASN.1 ByteStrings that contain enumerated values. According to X.690 section 8.4 an integer and enumerated value should have the same representation, so I shared the decoding logic between those two types.

The `Enumerated` constructor now holds an `Integer` rather than an `Int`.