Implement Enrage, with Raging Worgen and its tests

Enrage is a virtual Card which has most of the properties of a real
card and an actual Entity. It is defined in the CardDef.Enrage nested
class.
This allows us to implement very complex functionality in Enrage, like
a real buff card would have.
Always copy the tags when creating a new Aura

Let's avoid the mistakes of the past...
Move all weapon logic to the Hero class
Move aura logic check to base Card class

Auras are not just for minions.
Well, that's a bit theoretical anyway. We're doing this because we
want Enrages to be able to have Auras, but there is no pre-gvg card
that actually has an aura other than minions.
In GVG, Cogmaster's Wrench (Weapon) does have an Aura which makes a
lot of sense.

That said, Spells cannot have auras and we should split those out
into a class that has less "I'm always on the board" logic.

Note that because of this, we have to check that the source of an
aura is a minion before checking for adjacentBuff as the aura can
now come from a non-field entity.
Properly return the entity on buff()

Fixes a bug with aura updates
Fix broken Aura.destroy()

How did this go unnoticed?
Implement targeting.TARGET_(FRIENDLY|ENEMY)_WEAPON
Implement Spiteful Smith, with tests