Implement and test a simple flash log based fs for config data

- Described in detail in flashblock.h
- Basically allows for persisting arbitrary config data that changes
  frequently to flash and making sure that you can always read the
  latest config data even after a device reset.
Refactor firmware_cache and persist in flash

- uses new flash_block system to simply persist state across resets
- can now store and read flash images across resets
- reduced memory footprint by removing redundant variables
Add memory location for firmware_cache config
Update function signature to void* to avoid casts
Update readme with scons dependency