Some kids need some support while they go to sleep. And insufficient sleep could be causing some of the discipline problems - lord knows I'm grumpy when I don't get enough sleep! Since you know he will fall asleep with you there, why not start with that. You could also use a star chart with a reward for staying in bed and settling easily for a few days (say 5 days or 1 week). If you stay with him, which makes it easier for him to go to sleep, he will experience success and learn from it. You can talk to him about what sorts of things can help him fall asleep during this week - lying still, doing deep breathing to relax, counting breaths, whatever. The next week you can tell him that you will stay with him for 15 minutes to help him sleep, and then you will sit by the door until he goes to sleep. You can remind him to use the things that you've talked about, particularly the things he reports works for him. After he does this successfully for a few days, give him another reward and decrease the time you "assist". It might also help to offer praise whenever he attempts to help himself sleep. Continue to use the star chart and reward system until he is going to sleep at an appropriate time. (Can you tell my background is in psychology?? :-D)
Other things that might help - make sure you've got a good night routine and a reliable bed time. My daughter *needs* her routine so she knows it's time to go to sleep. We keep it simple - bathing, brushing teeth, a few books, a song and some rocking, then off to bed. Also, if I let her stay up past her "magic hour", then it takes FOREVER for her to go to sleep and she doesn't sleep as well.
One other thing, you might check with a doctor to make sure there isn't something medical that's keeping him up.
Good luck with you son!
T.