Navigator Rewrite

#### Overview

This navigator rewrite aims to consolidate the tasks of commander versus navigator. It is now written in the way that it was initially proposed:

- Commander:
    - Watch vehicle status, inputs, sensors, etc.
    - React to errors and human input (e.g. using a fail-safe state machine)
    - Set navigation mode for navigator
   
- Navigator:
    - Listen to navigation mode set by commander
    - Set position setpoints according to navigation mode (Misison, Loiter, RTL, etc.)

The state machine in the navigator is gone. However, it might someday replace the if/else failsafe logic (bool and enum hell) currently implemented in the commander.

The main work was to split the navigation modes into separate classes. This should make it easy for developers to add custom flight modes in the future. All that is needed is a new class for the navigation and a (new) mode from the commander going with it.

#### Features

- Land/in-air detection for FW added
- RTL does not trigger when landed
- RTL on RC loss is not triggered during mission but when the mission is finished 
- Switching to loiter after a mission is finished does not move the loiter center
- Switching to loiter after RTL (without landing) does not move the loiter center
- Loiter is triggered when WPs can not be read from SD card

#### Todo (updated)

- MC HIL Testing
- MC Testing (partly done, needs more testing)
- FW HIL Testing (done)
- FW Testing (flown quite a bit, latest fixes need re-testing)

- Autocontinue (not added yet)
- Waiting before triggering RTL (needs to be added)
- Autoland (works for FW, needs MC testing)

*Note:*
For review don't look at single commits, lot's of stuff got changed multiple times.
Don't forget to change the functions reset() and update() to on_inactive() and on_active() in loiter.h/.cpp