It sounds like "being friends" is not very possible at the moment. You both have feelings for each other, and I'm sure by saying "let's be friends" he doesn't want to lose you for good to somebody else. All that is though is just keeping you around for his convenience. Regardless of how badly you treated him, if you wanted to break up with him, you would have. You didn't, so it's obvious that you want to be with him. To keep you around like that is actually quite selfish. I'm sure he doesn't mean to be, but it is. You feel guilty for how you treated him, but you can't change the past and shouldn't be constantly rubbed in.
What you need is some time on your own to really sort things out and dive into your issues. I see that you wrote alot in detail about what happened recently, but I think the most important thing to really look into is your issues through the relationship. Ask yourself why did you act that way in the first place? You have to be brutally honest and you have to really want to find some answers, and it will certainly help you with your progress as a girlfriend and a human being. You say now that you realized, but I don't think you are quite in the position to execute being a good girlfriend. I think you still have some bad habits, and he is going to be nothing more than a distraction in that.
I know you care about him and it hurts not having him in your life. But staying together after all that has happened, or trying to pretend you are friends when you both want more is just getting in the way of your growth and development. For most, it takes really losing something you love to finally understand and want to put the work in to be a better person. What incentive do you have if he is kind of hanging around like you guys are going to be back together again soon? You are going to fall back on your same old bad habits, I can almost promise you that. You need to be on your own. You both need to be on your own. It takes some work, it takes some understanding, it's going to take a little bit of soul searching to really figure out stuff for yourself.
And when I say figure out stuff on your own, I don't just mean "how to be a good girlfriend". I mean focus on yourself. Focus on your schoolwork or full time job if that's what you have. Focus on the things you have control over, the things that can make your life better, to give yourself self worth, and be able to stand on your own two feet without having to lean on a boyfriend as a crutch like you did to this poor guy. You crushed him with the weight of your issues. Ease off of him. Don't put so much pressure on him. Don't put yourself in the situation of being criticized by him, because he is hurt right now for putting up with your abuse for so long (which was his responsibility as well).
Don't think about how to get him back, think about how to live life without him until you ready for a more sophisticated relationship. I hate to see you hang around some more, go nowhere with your growth, and then have him find somebody else or date you again and have it end in disaster. Because that's what will happen if you both are the same people trying to date again. You haven't changed yet and neither has he. That will need to happen to be successful. You can always be friends or something down the line, but you have to put this failed relationship behind you and you have to cut your contact with him and be on your own for a while. It's scary, it sucks being alone, but show some character. You lived your life fine before you met him. You can do it again.
Waking up next to a beautiful girl,
Step outside and say hello to my beautiful world.