Calculate k-effective at each generation

Ok, now it's my turn. @bhermanmit I've gone through and made the changes so that keff is changed at each generation. Now, when you use multiple generations per batch, the batch averages should not change. This actually helped clean up the `calculate_keff` and `replay_batch_history` subroutines a lot. `calculate_keff` has now been divided into `calculate_generation_keff` and `calculate_average_keff`, and `replay_batch_history` just relies on `calculate_average_keff`. The average k calculation should also work fine with the no-reduce method without any extra logic, which is a huge plus in my opinion (the logic there before was confusing).

Once I go through and do some more refactoring in the physics and tallies modules, things are going to be looking really nice!!

Anyway, give this a whirl and let me know if it is what you had in mind. I branched this from your hdf5_upgrade branch so this PR requests that it be merged there.