I agree, they are not the most child friendly dog out there.
Are you stuck on a purebred? A mixed small breed, who is not a teensy puppy, would be my 1st choice for a child's dog. Puppies are hard work and frustrating for a child, plus you don't know what the temperment will be. A slightly older puppy will be easier to handle and you'll see exactly what their personality is. Plus I'm a big sucker for dogs that are going to be put to sleep due to lack of room at the shelters... You can also find purebred dogs in rescue but they are often very picky about homes for those and it's harder to get a rescue to adopt to a family with children. Not saying it's right, but reality. A shelter with a purebred would be open to adopting to you - check Petfinder.
If you really want a purebred from a breeder, consider a Miniature Schnauzer. I've got one; she was a rescue - dumped by her owners and adopters 3x before a rescue pulled her. She was just 10 months old and had been through three homes =( They are a very lovable sturdy breed - highly intelligent. They have to be groomed and don't shed like a normal dog BUT she can go months while my Shih Tzu (cousin to Lhasa) has to go monthly. She's 16 pounds full grown. Small enough to be a lap dog but big enough to not get stepped on.
Try a few breed selector quizzes and see what comes up. That's how we decided on our two purebreds. Funny that our mutt has the best temperment, easiest to train, best with children, and healthiest! =) But since I have severe asthma, we have to go towards certain breeds now...
I would not recommend a teensy dog, like Chi or Yorkie. I wouldn't recommend a Shih Tzu or Lhasa either.
In the end, if you opt for a breeder route, it's imperitive you do a lot of research on a good breeder. When dealing with a child, you do not want to take any chances on poor breeding and run into temperment issues. You just can't be too careful with a child in the house and a new family member. It's worth the time to research and interview breeders - it's a 15 year commitment! =)