I use a variety of tools to route internal cables, but I've settled in primarily home-made; get a couple of shift cables, and two brass brake housing ferrules. Place them over the cable, with the open end around the cable knarp. Into this, glue two round 5mm rare-earth magnets, positive exposed on one, negative on the other. If you have a crimping die for 5mm ferrules, crimp it after gluing. Do the same with a shift ferrule, after filing the head of the cable so it fits. Place nothing in the open end.
Feed one down the downtube (some futzing required) until it's is approximately 1-2 cm in front of the bottom bracket. Feed the other down the seattube until it hits the top of the bottom bracket, then wiggle both around until it clicks. Pull one end out, and slip a piece of spaghetti (cable liner) over the exposed cable. Pull the cable out, and run your shift-ferrule cable through, with the ferrule end in the seattube. Push your housing into the ferrule, and guide it through the frame. Cut to size, and install.
I also keep a small, extendable pick-up magnet (General Tools?) in my bag for times where something more solid than wire rope is necessary.