Rework battle logic to allow mix of players and parties in a team, closes #96

Current algorythm is as follows:

1) Determine number of players to participate in the battle.
2) Sample this approximate number of players from the pool of available
parties and players.
3) Sort these entities by their battle score.
4) Add entities to the current party that has the lower score until all
entities are distributed.
5) Merge the entities into a single party.