Generate proto sources and headers in build.

This reverts commit 96e501eea8ef55e617dc8a7cef986db79b3d0853.
Note: This project will no longer build with the provided Makefile
      as it does not generate the protobuf sources and headers.
Require Python 3.3 and CMake 2.8.8.

Require CMake 2.8.8 for Python 3 support in find_package().
Require Python 3.3 for u'unicode' support which is used in protobuf
generation. This removes nanopb's dependency on Python 2 by converting
the protobuf generation script to Python 3.
Update build instructions in README.md.
Generate controller gains source and header files.

Require Python module Jinja2 for controller gains generation.
Update ChibiOS submodule.

Latest commit in the tegesoft fork has build binary option.
Require Python 2.7 and Python 3.2.

Require Python 2.7 for building protobuf sources. FindNanopb.cmake
hardcodes a call to 'python' which is set to python2 on many systems
and protobuf is not supported in Python 3.
This partially reverts 6002d51d32418dc67c2ef0ecb34d4f0390544cb5.
Fix python command in FindNanopb.cmake.

Modify FindNanopb.cmake to use PYTHON_EXECUTABLE found by CMake instead
of hardcoding 'python' command.
Add required python modules to CMake.
Updated generated Matlab PI gains.
Fix Python 3 find errors on subsequent calls to cmake.

Since PYTHON_EXECUTABLE will be set to the path of python2 when using
cmake after the cache has been set, cache the path of PYTHON3_EXECUTABLE.
This fixes c4915b29dc942f0edd61d1d52c821bc937966d4b.
Fix missing include in FindPythonModule.cmake.
Merge branch 'dev' of git://github.com/oliverlee/robot.bicycle into oliverlee_dev
Mark module paths as advanced in FindPythonModule.cmake.
Use find_package to find Protobuf in FindNanopb.cmake.
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