It sure sounds like you were an awesome Mom and your son is acting like a real jerk. You are absolutely on the right track to send the text you have in mind for his birthday!! He is well past the age when he can learn that parents are people too.
I would suggest that when he comes to "visit" again, you stop yourself from doing anything to make his visit special. Tell him that after his last visit, you didn't think he wanted you to do anything for him. Don't make it emotional, or throw in that what you do isn't good enough for him, or anything like that. Just be calm and matter of fact about it.
I watched my older brother do some very similar things to my parents for a long time. When he had gone too far, my mother would very calmly tell him that she hadn't done whatever he expected because the last time she did it, he didn't use it/eat it/whatever. If she had been emotional and played the hurt feelings card, it would not have made an impact on him. The fact that she just didn't care what he wanted, that she had other things in her life and he didn't matter enough to make her drop everything and do what he asked/expected? Oh that got through. HUGELY.
I do suggest that the next time you are with your son and he lashes out verbally, you don't take it. Don't make a fuss. Don't tell him off or give him a reaction. Just tell everyone that you need to go home as you cannot continue the evening. They can go one, but could they drop you off first? After they leave, take your car and go do something indulgent for yourself,or stay home and do something indulgent. If you are at home and he lashes out, quietly leave the room. Just refuse to be around him when he acts like this. There is no need to subject yourself to this kind of verbal abuse from anyone.
It is sad that your only child is treating you this way. Hopefully in a few years he will mature and realize he is acting like the south end of a north bound horse.