M600 Change Filament command improvements

This change split the M600 Change Filament command into multiple
primitives to allow its use on machines without LCDs or when being
driven from a host. The split also allows greater flexibility in what is
done when the extruders are parked.
I refactored the command to reduce its RAM usage by using the existing
destination structure instead of defining a new target. I set the
default homing E axis rate to be the default rate used in the ULTIPANEL
code (20*60).

Bug-fixes:
- the enqueuecommand() previously didn't handle multi-line commands and
so LCD commands like "Cool Down" in the LCD Prepare Menu ("M104 S0\nM140
S0")wouldn't have worked properly. [And I also obviously need it for the
Change Filament command.]
- ultralcd.cpp didn't compile without ULTIPANEL defined.
- noticed an error in pins.h

I have tested the commands work as expected.