Tabbed GUI additions + card change listening

Added a edit card tab view class.
Added IsDirty to card classes.
Added RevertableObject class which allows us to easily revert changes
done to properties. (Using this for the card classes since properties
are automatically propogated)