I doubt it's a "dominance" problem. By that I mean, it's not going to go away just because you stop letting your dog be pushy. A lot of people think that if you start doing NILIF or you start doing "dominance displays" that this will somehow teach your dog to stop all his bad behaviors. While NILIF (basically having your dog follow commands before he gets anything he wants) may teach the dog impulse control and gives the dog lots of practice with commands, it isn't going to suddenly stop his "bad" behaviors. You need to target those problems separately. And for the record, your roommate was right by backing off when the dog growled, otherwise he would have gotten bitten THEN. The trick here is finding out exactly what the problem is, what triggered him to bite?
My questions for you...
1. How long had they been on the bed together before the dog bit him?
2. Was the roommate touching the dog when he bit him? (either petting him or just having his body up against him)
3. Were either of them sleeping before the bite?
4. Did your roommate move or shift suddenly right before the bite?
It could be more resource guarding (which is what the bone incident was, he just didn't want to loose something so important to him. Dogs can also guard sleeping places if they think you are going to kick them off/make them move). It could also be that he got spooked while he was sleeping if the roommate suddenly moved, made a noise, or touched him. Plus a lot of dogs can become aggressive if they are bothered when sleeping. If your roommate was asleep he might have done something without even being aware (rolled on him, snored and sounded like he was growling, whatever). It's also possible if your roommate was touching the dog he might just have wanted him to stop and used his teeth to make him. In any case you'll need to know what's causing the problem in order to fix it.
Since he's growling at other times my guess is it's either a resource guarding issue or a "stop touching me" issue (either awake or asleep).
To find out what is upsetting your dog you either need to learn about dog body language or get a behaviorist to evaluate him and tell you what's triggering the aggression. Dogs give lots of warnings before they bite (usually) but many of them are quite subtle. They are frequently called "calming signals" because dogs use them to try and diffuse tension in social situations so that they don't have to get in a fight, they feel you are being threatening and they are trying to make you stop. But if they fail then they'll move on and use more obvious warning signs and aggression. Some examples of calming signals are lip licking (most dogs do this after being hugged, it's one that is easier to notice), repeated yawning (you see this a lot during stressful training sessions), avoiding eye contact, sniffing the ground (to avoid eye contact), "whale eye" where the dog has his head facing away from you but is glancing towards you with his eyes (usually see this right before a bite coupled with a stiff body), tail wagging can also be a calming signal (I see this when people are mad at their dog, people often say the dog must be saying sorry because he slinks over with his tail wagging), and paw lifting (holding one paw off the ground) although I don't see that one too much between a dog and a person, I see it more when a dog is being sniffed in the face by another.
If I were you I'd google "calming signals" and also look at some youtube videos of them. This will help you learn to recognize when your dog is becoming stressed so hopefully you can find out what is triggering the aggression. A trainer would be better, but if you really can't afford one I do understand (we're in the same boat!). I do think keeping the dog off of furniture for the time being is a good idea...however you have to go about it the right way. If you pull the dog off of the couch when he's on it then you'll likely make any guarding much worse (or cause it if it doesn't already exist). I would train him to follow an "off" command using treats as rewards. That way you can remove him from the furniture in a non-confrontational way so that the aggression cannot get worse.