Just to reassure you, I don't think this is that unusual and it will pass. When my DD was four she was having many tantrums, to the point that I was considering getting her assessed for developmental issues, as I thought she was too old to be completely losing it like that, but after talking to friends, they assured me it was pretty typical. Now she is 5, and still very occasionally has a meltdown, but they have gotten much rarer. I would focus on the basic needs: sleep, food, comfort and control. In my DDs case, I learnt to read the triggers and preempt it, and in her case, it was definitely related to constipation, but was especially bad when she was tired and hungry and over-stimulated as well.
In the throes of a tantrum, it is my belief that only she can calm herself down, she just has to learn how to do that. So, I focus on the issue at hand (don't get into lengthy conversations or negotiations about what she will or will not do), just keep repeating my mantra: "I don't do things when I'm being shouted at" and as long as she is safe and not at risk of hurting herself, let her get on with it. I keep telling her: we'll do that when you're calm....or something similar.
Another thing to consider is: how much control over his life does your DS have? If every moment of his day is over-scheduled and controlled and he has no say in decisions, it is bound to come out as frustration and anger eventually. My motto is: try to grant any reasonable and safe requests. Children (as we all do) need some autonomy in their lives. Having said that; too many decisions to make can also be a trigger for my daughter, so if she is tired and overwhelmed, I stop asking her to make decisions about things.
Finally, in terms of bedtime; you don't want to make going to bed a punishment, or a horrible experience. Can you try playing him stories to listen to (try Sparkle Stories)?
Try not to project your own issues (family history or the size of the flat) onto your DS and just focus on practical improvements: what's he eating at his GPs, for instance?