port to aeson 0.7

uses explicit encode/decode for From/ToJSON instances for Credential.