Updated generated Matlab PI gains.
Merge branch 'dev' of git://github.com/oliverlee/robot.bicycle into oliverlee_dev
Merge branch 'dev' of git://github.com/oliverlee/robot.bicycle into oliverlee_dev
Firmware implementation now uses protocol buffers.

This commit introduces changes to
 1) The data being stored.
 2) Format of the data being stored.

Previosly, only the minimal set of raw sensor data was being stored, and any
conversions done to this data for use in the control or estimatation had to be
regenerated when looking at this data later.  With this commit, all data is
converted to single precision floating poing (float) and  standard engineering
units by the firmware and this is logged.  This is fine for nearly everything
since there is no loss of precision when using a float to encode up to 24-bit
integers.  The only exceptions are SystemTime, ComputationTime, and
RearWheelCount, which are saved as unsigned 32-bit integers (uint32_t).  The
practical implication of this is that once the data is transferred from the
firmware to a PC, no conversion is necessary (except for the three fields
mentioned).  This should simplify the post processing and eliminate raw data
conversion bugs.

The format of the data is now stored using Google Protocol Buffers (GPB)
instead of a raw struct.  This allows fields to be added at a later date and
not have to worry about losing backwards compatibility with old data.  Prior to
this commit, any change to the logged data would require changes to the data
readers/converters, which would then render them incompatible with old data.

GPB doesn't specify how to separate messages in a stream so the approach used
is to prefix each message with a a 2-byte, little endian, unsigned integer to
the stream which indicates the byte size of the incoming message. Testing with
this needs to be done to verify the order in which to decode the two byte
integer.

There are a number of optional fields added to the Sample.proto file which
should aid in debugging.  Once debugged, it may be useful to add compilation
options which disable these fields from being written.
Generate protobuf sources in an external project.

Use an external project to find protobuf package without interference
from toolchain settings.

Conflicts:
	cmake/Modules/FindNanopb.cmake
	firmware/src/CMakeLists.txt