Add GCode compression to reduce the amount of data to send. Improved error handling.
Save work on MarlinSimulator.
Ignore vim swap files.
* Added define 'UM2USBPRINT' to enclose USBPrint specific code.
* Decreased baudrate from 250000 to 115200 to lower the number of skipped characters
  at the USART. It is better to transfer the data a bit slower but more
  reliable instead of a fast transfer with lots of retransmisions...
Moved the following sequence of statements:

-        manage_heater();
-        manage_inactivity();
-        lcd_update();
-        lifetime_stats_tick();

into a new function 'doIdleTasks()'. This code was duplicated at 10
places. Moved the serial receive code into this new function also. Two
reasons for this change:

* less code duplication
* serial/usb data is processed every time when the program is
  idle/waiting now, not just at the beginning of the loop() function.
  Serial/usb data should be processed more frequently now.
Don't poll serial USARTi with 'checkRX()' if UM2USBPRINT is defined.

Call 'doIdleTasks()' while busy-waiting, don't block processing of
serial/usb data.
Call 'doIdleTasks()' while busy-waiting, don't block processing of
serial/usb data.
+ Moved the following sequence of statements:

  -        manage_heater();
  -        manage_inactivity();
  -        lcd_update();
  -        lifetime_stats_tick();

  into a new function 'doIdleTasks()'. This code was duplicated at 10
  places. Moved the serial receive code into this new function also. Two
  reasons for this change:

  * less code duplication
  * serial/usb data is processed every time when the program is
    idle/waiting now, not just at the beginning of the loop() function.
    Serial/usb data should be processed more frequently now.

+ Allow processing of commands from sd card with 'get_command_sd()' even
  when serial characters are received for sd card store/print at the
  same time. This is possible because 'get_command_usb()' uses its own
  buffer in this case.

+ Removed check of buffer fill in 'get_command_sd()' since this is done in
  'loop()'.

+ Flush serial/usb rx buffer in case of receive error/resend.

+ Update 'lastSerialCommandTime' in 'get_command_usb_packed()', too.
Added 'ultiprint.py' utility to the repository.