add unit_erase_all

Probably I should start using ranges everywhere.
simplify unit_pick_random
change unit_damage_all_collided to work on ranges
no need for std::for_each, fun of ranges!
use Range instead of InputIterator