Added code for reading mcell binary data output files.

The binary mcell reaction data reader framework consist of
three components. Below is a brief summary and I will
provide additional documentation on how to use them.

The main part is a shared library libmbd (mbd = MCell Binary Data)
which knows how to read binary reaction data output files. libmbd
provides a C++ and C API. Thus, data can be efficiently extracted
and analyzed by simply hooking your C/C++ analysis code into libmbd.

One note of warning: libmbd reads the compressed binary
data files directly and extracts them in core memory. This
allows for very fast data access and stride through a large
number of data files. However, it requires that the
*uncompressed* binary data file will fit into main memory.
Typically, this is not an issue but good to keep in mind.
Should there be issues with large data sizes, a simple
workaround is to split single reaction data output blocks
into several to reduce the number of datasets going
into a single binary reaction data output file.

In addition, I provide a command line tool mbdr which
is a thin wrapper around libmbd and allows extraction
of arbitrary data sets from the binary data file as
plain text (either by data set id, name or via regular
expressions). Typing mbdr -h should explain the basic
usage.

Finally, pymbd exposes an object oriented python
interface to libmbd which allows data analysis from
binary reaction data output files directly in python.
I'd highly recommend to use pymbd's mbdio class within
a context manager to make sure the proper cleanup
takes place (otherwise memory leaks are possible)

from pymbd import mbdio

with mbdio("<some binary file>") as obj:

  ... do sth with obj ...
Moved code to flush binary streams.

Previously, the cleanup code for the binary streams
flushed the streams too late causing occasional partially
written files. Moved the code so streams are now flushed
properly before they are closed.