S.S.
I agree with having them play only at your home or when you can supervise. It is not fair for your son that the other parent is allowing name calling, even at this age it can begin to affect their self image. We have had several of the same issues.
We solved sharing by using a timer and allowing one child to play with the coveted toy for 5 minutes then when the timer went off he had to give it to the other child for 5 minutes. Be sure to use the timer so they can hear when there time is up. If they choose not to share the toy it gets put up so they may not play with it again that day.
We solved the mean name calling and fighting by only allowing them to play when they were getting along. As soon as they started fighting or calling names or being mean they had a warning. The next time it occurred the child visiting was sent home and they could no longer play for the day. When they got together the next time the same thing took place, it only took a few times for them to learn to share and be nice or they weren't allowed to be together.
Another thing I did was if we were at someone elses house and their child was being mean to my child and their parent would not make their child be nice I would just say "OK son since _______ doesn't want to be kind and play today we don't need to stay here any longer, let's go get some ice cream and come back another day when ____________ wants to play nice" of couse I would say it loud enough for the parent to hear so that she would get the hint that my child no longer needed to be treated this way. (This happened with one of my friends children, once I did this she began realizing she needed to stop the meanness or we weren't coming over)
Good luck, you just have to stand firm and stand up for your child. If you do not it is apparent that it won't happen in this relationship. Some parents just need to have someone show them what is acceptable and what is not before they get it.