Bavarian Technic is a great tool that will do everything you want and more, but you're paying quite a bit for that luxury. Other options would be a handheld scan tool for ~$85 will allow you to read and clear most codes; they're all pretty much the same as long as they support DCAN and mention BMWs, which would mean they would recognize at least some BMW-specific codes beyond the standard OBD set. There are also Bluetooth/WiFi OBD dongles that you can use with a variety of smartphone apps. It's possible the BavTechnic tool will read more of the proprietary codes than those aforementioned tools won't, but again it's a lot more expensive.
I use a coding cable and a free tool called BMWLogger to register a new battery, but I guess if you don't already have that cable, BavTechnic would cover you there, but there might be smartphone apps that will do that with a WiFi/BT dongle as well.
Resetting service intervals can be done on the dash:
.