Fix crasher in new 3D viz

Normals are not defined for travel moves, so we need to enable the array
after drawing them, not before
Make path_width and path_height dynamically changeable
Store numbers of currently loaded layers in 3D view

This avoids trying to use layers for which vbos are not ready yet
Protect critical code paths in 3D viewer

I have yet to see a crash from such an issue, but it could clearly
happen, so let's make it safe
Protect light gcode model as well with locks
Correctly delete VBOs in light gcode model
Add settings to specify path width and height in new 3D viewer

Also change FloatSpinSetting to have an "increment" parameter and clean
some code. Also put 3D viewer options in their own tab
Merge branch 'master' of github.com:kliment/Printrun