M.B.
You son sounds like he's extremely sensitive to his environment and there's been some big changes to it recently. IMHO, it's far better to let him sleep in your room than to keep everyone awake all nite or you sleeping on the floor in his room. Some kids need more reassurance that the world is an okay place for them. Once they feel that you are there for them, he will become more independent and less clingy, but he's first got to know that you're there for him and not pushing him away. Both my boys were like that and for us, having a family bed worked best. Babies (and toddlers) have an inate need to be close to their parents. However, IMHO, you should NOT have to bring him in the shower with you and you need to define some boundaries in that respect. You might also consider that he might have a health issue. Both my boys were diagnosed as celiac when the oldest was 10 and the youngest 8. In hindsight, their not feeling well might well have contributed to them having a higher than normal need for comfort from their parents.
Also letting him control too many things might not be so helpful. Kids need boundaries and if they have their way with too many things, then they're actually more uncomfortable. So, I would just suggest letting him have control over one thing (e.g., picking out the books he wants to read) and then creating a routine for everything else, which it sounds like you've already got with the bath/bedtime routine. But, maybe instill that in the playtime and snack routines, as well. My boys are now 12 and 15, but they still need to know the routine as far as how much time they're allowed after dinner to play outside now that it stays lighter, whether they can watch a show at nite, showertime, etc.