Added 'no-iterables' version

In this version you are parsing an input stream from a user, validating it after every input prompt.
You are not allowed to use a python iterable to keep track of the brackets.

My solution takes the input string an encodes it as a tower of powers. Ie,
"((({<" -> 5^(5^(5^(2^7)))
Then if we find a closing bracket we do the relevant logarithm and check for integrality.

It uses Longs, which although stored as arrays are not iterable from python's point of view.

My solution is theoretically ideal, but not practical. Just three "(" in a row in the input can cripple it.
Plus there would be python rounding errors involved eventually.
However, it can theoretically handle an infinitude of brackets with ease: Just dynamically assign them a unique prime number whenever you come across a new one.

Have not yet come up with a more practical solution.