Fixing channel.readstring

The previous version of this function was very inefficient, since it would allocate the size of the file, even though we might have a reader on only a very small portion of the file. This pull request fixes this problem by instead giving back the total size of the given channel.