Move serial initialization into constructor for serial object

This solves a problem where I was executing the function that waits to receive data  in a seperate thread before I had initialized the serial connection.
Merge remote-tracking branch 'refs/remotes/origin/ImplementingThreading' into ImplementingThreading