refactoring some of the commonality out of action_lines and custom_command

this allows me to create a new method, list_commands, that will get all of the possible commands
FINALLY made `vc commands` show all custom commands as well
added --policy switch

so far, all it does is bomb out if you're not a dir that supports that policy
using --policy will now restrict the commands you see

when you do `vc commands --policy` (or just `vc`, if you have $VCTOOLS_POLICY set),
-	you see the structural commands `help`, `commands`, and `info` (but not `self-upgrade`)
-	and you see any custom commands
-	-	right now, that's all custom commands, not only custom commands under that policy
-	-	but I might change that
make fake config account for new warning on bad VCtoolsDir directive

this should have gone out with 0effd3b613 (I'm getting slack)
created new validation: "Verify = clean"

this handles an %is_dirty check for you
this also gives us a place to put any potential "auto-stash" code (like git introduced with 1.8.4)
going back to the more conservative definition of %is_dirty

this makes me far more comfortable
and I've made an override in the CE policy file so Eric will still be happy
(honestly, I should've done it this way in the first place, but I wasn't thinking clearly)