Mr partitiontable warmup backport

Added enforcement to have a partition table before the actual job is started and found missing volatiles on the reducer implementations of the unittests (tests were mostly copied from castmapr where the volatile keyword was not needed).

This should fix:

#3065
#3289
Should we not add this behavior in the PartitionService? I think waiting for all partitions to have an owner is a responsibility of the PartitionService. Else we are going to get this logic copied all over the place. We already have it in the warmupPartitions method in the HazelcastTestSupport.