Now in theory and spending ALOT of time, you could funnel them to the location with a two block high tunnel. But again, that's spending a stupid amount of time herding them in the right direction while blocking the way they came up so they can't head backwards.
But yeah, it's resource intensive, but much quicker just using rails and minecarts.
Yes, villagers do fit in minecarts. I'm pretty sure that is the only way to move them.
You can also get them to follow you at night by building a trail of "fake" houses, leading them away from the village, destroying each visited one to make them move on to the next. You have to destroy all the houses (doors) in the village first, though, to get them to leave.