Two changes to try to achieve repetier firmware compatibility

- Read a "wait" as an empty line in order to send keep alive temperature updates
- Added option to add a checksum to all commands. Needed to add current line tracking for this, let's hope that we'll never get out of synch here...
Merge branch 'devel' into repetier
Reset currentLine when changing state to printing

This keeps gcodePos and current line in sync when changing status to "Printing"
Overhauled resend handling to also work with alwaysSendChecksum feature. Also introduced new feature flag resetLineNumbersWithPrefixedN to make M110 commands send the target line number as part of their N prefix (Repetier), not as a separate N parameter (Marlin & co)
Added known error messages for checksum mismatches or expected line issues from Repetier to recognized "auto-correction" errors, made code around all that a bit more readable.
Fixed off by one error in resend loop
Prevents manual commands from interupting other commands
More reliable initialization of communication with repetier
User thread lock instead of boolean to ensure only one concurrent sending thread, introduced wait flag for repetier printers
Merge branch 'devel' into repetier

Conflicts:
	octoprint/server.py
Removed waitForWait again (that didn't make much sense to begin with...)
Merge branch 'devel' into repetier

Conflicts:
	octoprint/util/comm.py
Merge branch 'devel' into repetier
First try at SD card support
Proper uploading incl. drag-n-drop for both local storage and SD card
Reset SD file data when disconnecting or when losing/regaining connection to the backend
Use M26 to reset SD position to 0 when cancelling and restarting a print, preprocess gcode before sending to printer
Properly switch between file and sd printing
Always send all lower case filenames to the printer for sd card commands
Properly parse Marlin's "opened file x" message