Replaced interpret with query() and decode(). The method query combines small strings of data into large strings and calls decode() until it finds a terminate flag. The method decode() calls query_loop() and takes the "meat" of the data (slicing off leading #3XXX and trailing \n).

The decode() method also has some code that records how many strings aren't in the format we would expect. This was implemented because we originally saw errors due to missing \n's in both empty data and after terminate flags. We solved this by using the metadata in #3XXX to count the amount of bytes needed rather than slicing the last character. Somewhere, some \n's are being dropped. It is good to keep this in mind for future programming.