Simplify Card.summon() and buff API

The target argument to Card.summon was confusing and only used for
buffs. This change lets us get rid of it by using Buff.apply(target)
instead.