Path saving rebase

This is a rebase on #471 against next

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