OR we switch to some non-int format like string... impossible to know)
A string is just a sequence of 8 bit values--same as an integer, it's all about how you interpret it. While it is easy to say you can increase the divisibility of bitcoin, it would involve a consensus on reinterpreting the value of "1" as not meaning "a satoshi" but "something less than a satoshi". This will be very difficult to do if there is a proliferation of embedded devices. Alternatively, a maximum transaction amount could be set (something far beyond any probable transaction size), and then anything above that is less than an original satoshi. It still requires reinterpretation, but it does not explicitly break backwards compatibility.
Bitcoin supports versioning of tx and blocks. If there are future breaking changes they would be new versions. ver1 transactions and ver2 blocks (the current right now) will never have a breaking change. It is possible that at some point in the future ver 1 transactions and ver 2 blocks will no longer be supported but they will remain EXACTLY as they are now until the day (block) they are no longer supported. Bitcoin is a network of consensus it simply can't work any other way.