New party shared experience bonus

This closes #889.
Only no vocation has fromvoc as 0 in vocations.xml, perhaps this should be != instead of ==? It would be the same below in the loop.

Is there any reason why simply:
```cpp
uint32_t vocationId = vocation->getFromVocation();
if (vocationId != VOCATION_NONE) {
	vocationIds.insert(vocationId);
}
```
Isn't good enough?

It would also be possible to improve performance by using a bitset, or just a raw int (but then we have no elegant way to count bits set unless we construct a std::bitset from it and call count(), in which case using a bitset in the first place is probably better). I don't think this is performance critical though, so you don't have to worry about that.