New Plugin Swap at Z and Adding SD Card features

Hello,

I'm new to Git and this is my first pull request. I would have liked to split the pull request per subject but I don't quite get how that can be done. For example: change f62cdfa is not required for this pull request.

I could only test on Windows and on UM2 with Ultigcode flavor.

Plugin Swap at Z:
This plugin swap portions of gcode as a post process with a previously saved gcode at the give height. It support Print one at a time, layer height changes and most of the settings like infill, shell thickness and so on. With different layer heights the display in Layer view will get confused but if you load the resulting gcode alone it will display properly.
A topic on the forum was started since more demands have been popping recently. http://umforum.ultimaker.com/index.php?/topic/7290-new-plugin-swap-at-height/

SD Card addons:
I have been looking at ways to improve the SD card save functionality for different reasons. One was to have sorted content displayed when browsing for a file to print from the printer and the second one to introduce some concept of project/workspace/folder replication between source files and saved gcode on the card. The sorting wasn't done directly in Marlin because it seems already slow to navigate in so many files and folders.
Sorting content:
- Added "Sort SD card content now..." action in the Machine menu. This will recursively trigger a move back and fort of all the folders (first) and files (second) into temp folders by name so the content on the card get inserted in the desired order. This does involve a lot of moving on the card and can be long but produce the sorting properly.
- Added a preference setting "Auto sort content after save" to trigger a non recursive sort on the folder affected by the save.

Folder replication:
- Added a preference setting "Base folder to replicate on SD card". Provide the base path where most of your STL files are stored that should represent the root on the sd card. When saving gcode on the card from models that are under that base folder (or sub-folders), the save path will also include the relative path on the card. i.e. if the base path is D:\3DPrints\UM and the model is at D:\3DPrints\UM\3DHubs\12345\model.stl then the saved gcode on the card will be saved at DriveLetter:\3DHubs\12345\model.gcode. Sub-folder get created and sorted if needed. I have a hard time explaining this feature in a few words in the tooltip of the preference setting.

I hope this is clear enough.

Thank you

PM