AbstractDiscreteAllocMemory._read() fix

Instead of building buff from successive concatenations (which result in a lot of memory-to-memory writes), buff is build as a list of strings, which is concatenated once when the functions returns.
 In _read() intensive plugins, or when reading large chunks of data, this results in noticeable speedup.
Add very minor optimizations of not reconstructing the long/longlong structures on each read, as suggested by bcostanzo in pull request #88.