Support serialization of merchant data, so we can support field value longer than the 100 char Cybersource limit
Create subclasses for the signatureChecker (one for the cart and one for cybersource). This stems from needing a different way to check the cart signature, as I ran into a problem using the merchant data fields to hold the cart signature and the cart's signed field names. The signed field names can exceed the 100 character limit for merchant data fields (I could have used the serializer to get around this, but I wanted its use to be optional, not required, and it added what felt like it was going beyond the tipping point for the complexity of the overall approach). So the cart signature checker now uses cookies to hold its signature and signed fields. These aren't really sensitive data, since you would need the secret key to manipulate them in any meaningful way, so using cookies didn't strike me as any more of a security concern than using hidden form fields.
Correctly handle the possibility of both a transaction error and a payment form setup error when coming back from the cybersource transaction.
Note: I also discovered what seems to be a 700 character limit on the signed_names_field. Cybersource throws a 500 error if you exceed it.