Is there an overall stat cap AND is there a hard cap on single stats such as strength or intelligence? Or can I just keep gaining permanent stat upgrades from fairy chests?
There is a theoretical stat cap based on what kind of variable the code uses. But, in most cases, there is just no way you're going to hit that cap. And, if the programmer didn't account for anyone actually reaching this maximum, funny things will happen if you hit it (typically the variable cycling around to a negative value, or resetting back to 0, but it could also completely hose the game).
If the program is set up to use just normal integers for everything without trying to streamline with variables specifically targeted to likely data size(which is a fairly reasonable assumption), the theoretical maximum for any stat will be 2,147,483,647.
To put that in perspective, to get 2,147,483,647 points in attack, you'll need to collect one billion attack chests. Assuming you can speed through with mobility runes to a point where you're collecting +2 to attack every 5 minutes, that would still take you two billion hours to accomplish, which is on the order of two hundred thousand years.
Armor a tad different. You reach the practical maximum for armor at around 19,800 points of armor (at which point the damage taken goes under 1%). This would be doable, but you'd probably get really bored of the grinding far before you hit it. Specifically, you'd need to collect 9,725 chests to get there. If you somehow managed to average a +2 armor increase every 10 minutes, it would still take you 1,620 hours to accomplish this feat. Once you did it, though, you would be essentially invulnerable or close enough, anyway.