Streamfs: library for streaming data to flash

This library will stream data to a flash file system. It
will place these files consecutively in flash and wraps
around like a circular buffer. There is no protection
against wrapping around and overwriting previous files
or the beginning of this file.
Streamfs: add unit tests

Conflicts:
	Makefile
Streamfs: make pios_com interface functional

Now once a file has been opened, either reading
or writing can be done by streaming with PIOS_COM.
Streamfs: add unit test coverage of PIOS_COM interface
Bootloader: make aware of log and ota partitions

This allows using the uploader to directly read from
these partitions.
GCS/Uploader: add support for OTA/Log partitions
Logging: create a new module for logging data

This uses Streamfs to write the logs using PIOS_COM
to a circular buffer on the flash chip. It starts
writing as soon as the system is powered up.
Logging: add code to download log files while running

This is mirrored from the picoC code and allows downloading
from log files in 32 byte chunks.
GCS/Logging: code to download logs from running FC

This adds a menu option that will iterate through a log
file and download it from the flight controller to a
file.
Logging: add settings to enable when to start

The default behavior is now to start logging when armed
rather that writing lots of log data while simply idling
on the ground.
Merge pull request #1396 from peabody124/streamfs

Streamfs - ring buffer style file system for flash
GCS Autofill GCS_YEAR with compile date
Make gcs template added GCS_REVISION_GITHUB tag
GCS Use new version strings and XKCD title on the version dialog
GCS/Added XKCD title to core constants
GCS Version: strip out XKCD title

This doesn't currently work on jenkins
GCS Version: remove XKCD info from dialog

This does not work on jenkins.
GCS Version: use date-hash consistently
Merge pull request #1409 from peabody124/version_dialog

Version dialog
Merge remote-tracking branch 'upstream/next' into draco