Path saving and loading

**WIP**

This implements path saving and loading to flash. It's tested and works as advertised, but there is some cleanup needed before it is ready for merging (e.g. making sure to invalidate all the previous elements of a path in flash before saving, marking waypoints in ram as invalid when loading). However, I think with those things addressed it should provide the functionality we want.

Currently there are 5 paths supported, but this is trivial to increase. Given the waypoint partition is 1 MB and a waypoint used 256 bytes (@solidgoldbomb, would it work to reduce the slot size to 32 bytes?) we can a few thousand waypoints - but a single path cannot have more than 256 waypoints.

Comments appreciated.