Filament management

Adds the option to auto load and unload the filament, and purge and retract a set amount.

This is tested both enables and disabled on a Mini Kossel running on RAMPS.

Based on this work:
https://github.com/lajos/Marlin/tree/tantillus/Marlin
https://github.com/lajos/Marlin/commit/5a1744b32dd0a39856dc1dc8080a0b9b0407ad83
and a few further commits