Improve text objects with a count

Also fixes a bug when only one item is in the argument list.
Minor refactoring
Extract some common logic

Seems like I'm going to need a couple of objects.
Extract a "movement" object