I have a few things to say, the first one just being, wow. It takes a lot of energy and courage to write such things on a public forum, and you have done well.
Regarding your relationship, you need to remember several things. Firstly, she has obviously gone through a lot with you. It is always difficult to see what we put our loved ones through, especially as the normal human instinct in situations such as yours is to think about sorting yourself out first, and then sort out the fallout from arguments. Without ever having spoken to Holly, I cannot comment on her side of the story, although I do not doubt that occasionally she would have given as good as she got.
I know a lot of people whose only instinct after being in a long-term relationship is to have companionship and physical intimacy again. It is very difficult to go from always having someone by your side to being completely alone, and this drives many people into the arms of someone else. It is difficult to understand if you don't feel the same way, but it happens. By going on dates with other men, she has a chance to try and push her feelings for you to the back of her mind as there is someone else to fill the void you have left.
You are both still young, and a lot of people who get into relationships at a young age will be inseparable for a long time, and then it can all suddenly change. From what I can guess, this comes because people generally change in their late teenage years, and what can be a fun or even comforting relationship at 16 is not what the same person wants at 20. For a relationship to work at that age, you have to still both want similar thing.
It may well be that as Holly has grown up over the last couple of years, the comfort provided from your relationship is no longer what she wants from a relationship. Again, I am only guessing.
You say that you bought her everything you could. This alone does not make a perfect boyfriend. Love and attention can be worth a thousand romantic meals and presents. You shouldn't feel that for a girl to stay with you or even love you that you need to spend money on her. If you are in a distance relationship (which seems implied by your posts), then yes, make sure you always have enough money to visit, but you shouldn't feel that every time you go you need to take something.
I think that perhaps you need some time to just be around your friends and think about what you want from life. If it hurts to talk to Holly, then don't even give yourself a chance. Tell her that you want some time, and say you will contact her when you feel more comfortable and confident.
It really sounds like she wants to move on with her life, and taking her age into consideration, I think you should let her.
There is not always just one person who can make us smile, just that only one person will turn up at a time. It is not such a bad thing to sleep with more than one person in your life. In fact, in some cases, planning to do so will make you less likely to ever want to let the first person go, because what do you do when they are gone and you can't be with anyone else?
Don't limit yourself, just set reasonable boundaries. It is always a good idea to know what you find moral and immoral, so think about this. Would you be willing to be with someone else again after a relationship of several months? Or perhaps when you feel that spark again and the time feels "right"? What if you do that, but then the relationship doesn't last? Would you feel like you had betrayed yourself, or glad that you had taken that step with someone you felt love for?
I've just realised how much I have written, so I'll stop there. I hope this can be of some help in answering your questions.