Add Battle and WinCondition predicates.

WinCondition is just an interface that declares a method to tell whether
a battle is fulfilled. Multiple conditions can be composed using logical
&& or || (with Composite.All and Composite.Some). Also infinitely
nestable...but don't go crazy.