My daughter can be the same way. Whenever I do allow something different, like an extra story, I tell her "Just this time - this won't be all the time!" but I have been really careful about keeping with the routine we have. I also have to "head her off at the pass" - I usually know what she is going to try to pull to stall bedtime so I let her know upfront that if, for example, she lets me pick the stories to be read, she can't change her mind halfway through.
I think I read or heard somewhere that its a kid's job to try to get as much as they can and they will always want more. It's just how they are programmed. Keeping that in mind has made it much easier for me to say no to DD's requests and demands and not feel like such a "mean mommy!". And all kids, especially at this age, will test you and test their limits and try to see where you will give in if they are persistent enough (and some kids are more strong-willed and persistent than others!).
If you can be okay with adding a lullaby to the nightly routine, then do it, but make it clear to your son that you are only singing one, and he is not to keeping asking for a different one. If he is not cooperating with the rest of the routine, or he starts acting up, the consequence is he does not get a lullaby and the bedtime routine is cut short. My daughter is the same age and she knows that if she starts acting up and being silly in the middle of story time, instead of being a good listener, story time is done and she is going straight to bed. But in the grand scheme of things, it won't be long before he feels like he's too old and too big for bedtimes stories and lullabies, and you could find yourself wanting to be able to do the bedtime routine, just one more time...