cleaner separation between Card and BoardStateFactory

Refactored the Card and BoardStateFactory classes so that all card
removal happens within Card