Way I see it, he's cheated before, and you let him back in when most normal, rational people would have kicked his ass out to the curb, and left him there, like a bag of rotten waste. This loser scumbucket actually cheated on you, and you were kind enough to show leniency, compassion, forgiveness, and whatever it was, and however admirable it may be that you let up on him like that, the sad fact is, he very easily may have exploited that like it was some kind of weakness. Used it, and you along with it
Cheaters don't generally learn from such leniency. The reason for this, is that most cheaters are selfish assholes. A lot of them have really stupid reasons for doing it. A thrill of doing something wrong and getting away with it. A selfish desire to have it all, and not just limit themselves to one person. A complete lack of giving a crap about their partners (BF/GF) or their feelings. Now, whatever the reason, in most cases the person who's been cheated, is not to blame, and that's something you should come to terms with if you haven't already, but more importantly as I said, cheaters do not learn from leniency, and I'll explain what I mean.
The way your boyfriend probably took your leniency is like this. He probably thought, that you didn't break up with him, and therefor he's gotten away with it. In a lot of cases if you give a cheater a second chance, they'll take it as an opportunity to do it again. As a lot of people say, "once a cheat..." and in most cases this is true, until you seriously put a cheat in their place. Usually by directly dealing a humiliating, deep, hard, harsh and very public, punishment with a hint of hope that things can be worked out before you reveal that it really can't, by dumping him in the coldest way you can think of, and never EVER looking back.
From somthing like that, a cheater MIGHT learn a lesson from the experience, and only if you actually stick to your guns and never look back, but even then, there's no guarantee a cheater will learn. Still at least you've shown him, and it certainly beats letting him off easy and taking him back only to let him do it again.
As for your boyfriend. Yes I think he cheated. You said he did it before, and clearly you're still with him for whatever reason, so yeah I think he cheated, again, and will again, and all because you gave him a second chance and feels like he got away with it.
You know how I think someone should handle these situations, but what I think is more important here is asking yourself how you're going to handle it. Think about it. He's cheated before, and here he is cheating again and lying right to your face about it. Even after you showed restraint, and even after you gave him a second chance. You trusted him once, he cheated. You trust him twice, he did it again, and lies to you in the of face you and your evidence. How does that make you feel? More importantly, what are you going to do about it? how do you handle it?
Your situation sucks.