===== SteereoStream =====
==== Description ====
The SteereoStream manages a dynamic byte array and provides functions to append and get data out of it. As most kind of data can be stored into
a SteereoStream is used for nearly all send and receive operations.

==== Usage and Functions====
Normally you will use the streaming operators (<< and >>) to put data into the stream and to get data out of it. If no more data is available to read a warning will be
issued. If you want to write something into a "full" stream, it tries to resize itself. You should allocate the needed memory before writing to the stream, otherwise
you will have a resize of the stream after every written variable.\\ 
These functions are available besides the streaming operators:
  * <code cpp> template<class C> SteereoStream& insertArray (C* cptr, int arrayLength) </code>  Just inserts the array //C// of length //arrayLength// into the stream. 
  * <code cpp> template<class C> SteereoStream& receiveArray (C** cptr, int arrayLength) </code> This sets //*cptr// to the current reading position of the stream and advances the reading position afterwards. No copying is involved this way ! 
  * <code cpp> template<class C> SteereoStream& receiveIntoExistingArray (C* cptr, int arrayLength) </code> copies //arrayLength// elements into the array //C//. Of course the array //C// should be big enough.
  * <code cpp> void readBoolVector (std::vector<bool>& vec, int bytes) </code> reads the next //bytes// bytes into the given boolean vector.
  * <code cpp> void adoptComplete (SteereoStream* comm) </code> <code cpp> void adoptRest (SteereoStream* comm) </code> Replace the current stream with the complete stream //comm// or from the current reading position on (that is the part that has not been read from //comm// yet).
  * <code cpp> int getStreamSize () </code> <code cpp> int getRestStreamSize () </code> returns the current size of the stream or respectively the not yet read size of the stream.
  * <code cpp> void resetReadPos () </code> With this the reading position of the stream will be reset. Thus the next elements read will be those from the beginning of the stream (again).
  * <code cpp> void allocateMemory (int size) </code> allocates //size// bytes for the stream. It is recommended to allocate the needed size before writing to the stream, if the size is actually known. But this is not mandatory.  
 