Refine Card model and associated join tables

Implement validations and associations on Card, CardSubmission,
CardPrerequisite, and ChallengeDeck models.