sa: use model struct for Certificate, CertificateStatus, FQDNSet
In the SA, we mostly use structs internal to the SA to represent the database's storage of various objects, and translate those objects into proto messages to return from RPCs. There are three exceptions:
https://github.com/letsencrypt/boulder/blob/bc3978090881ff3fc816692cdbd380e89b563d66/sa/database.go#L272-L274
Certificate, CertificateStatus, and FQDNSet use types from the core package as models. We should switch these to SA-internal models.
The last bit of this, FQDNSet, requires some more tweaks to the expiration-mailer unittest. Rather than make those tweaks I'm going to consider this blocked on the removal of expiration-mailer.
This bug is now unblocked!