Remove --skip and handle start/end args earlier

This makes it so that the actual hosts list is modified by setting
hosts to start or end at. One of the effects of this is that we will get
cleaner progress-reporting, since it will be based on the actual size of
the push, and not the size of the host list before these restrictions
are applied.