Added Simulation and Demo (Display Window)

Added ArnoldPatch which communicates with Arnold via APIs and a buffer driver. The demo juce project takes buffer and renders the result with a refresh timer. Note the JuceLibraryCode inside JuceWindowApplication is empty in repo. Copy the content to build and run the project.
getSimulationPatch API, modified ArnoldPatch and a intensity changer for GUI

Now it's possible to get the ArnoldPatch instance from rig, so the caller can
get access to virsualization-related infos via ArnoldPatch function. Arnold-
Patch uses a separate loop to render which makes abort and restart with new
light parameters possible. Also, most of Arnold API calls were pulled out from
ArnoldPatch. They are handled by ArnoldInterface class now. A simple slider
was added to GUI. Users can change intensity of the light and re-render the
scene.
Changed AiRenderAbort to AiRenderInterrupt
Callback for Device, cleaned up Device and ArnoldInterface
Cleaned up code for ArnoldInterface, ArnoldParameterVector and ArnoldPatch
Added int id to registered callbacks
Merge remote-tracking branch 'upstream/cues'

Conflicts:
	.gitignore
	Lumiverse/source/Demos/LumiverseDemo/test.cpp
	Lumiverse/source/LumiverseCore/CMakeLists.txt
	Lumiverse/source/LumiverseCore/Device.cpp
	Lumiverse/source/LumiverseCore/Device.h
	Lumiverse/source/LumiverseCore/types/LumiverseColor.h
	Lumiverse/source/LumiverseCore/types/LumiverseFloat.cpp
Build settings and Arnold flags change
Merged with branch arnold. Built on Mac.

The Cue system is added from upstream. There is a separate target for dynamic
library of Lumiverse core.
.gitignore update
Additional functions for LumiverseEnum
Additional functions for LumiverseEnum
Duplicate function body in LumiverseEnum
Cast for printing debug info
getDevice() for a Programmer objec
Added function to read device from a Programmer without capturing them
Remove config files from repo

They get generated each time CMake is run anyway.
Also fixing terrible loops in LumiverseColor
Thread safety improved a bit
Refined ArnoldPatch. Dynamic device control panel for GUI. Fixed several bugs.

ArnoldPatch now uses parameters field for "float" and "color" values.
ArnoldInterface is able to set "string" and "matrix" values. Juce App
generates a control component for each device dynamically.
Fixed bugs:
- Arnold plugins were loaded after loading ass file. Cannot find plugins.
- Rig read json without '\0' at the end. "Not JSON" error.
- Device added invalid parameters. Bad memory access when deleting device.
Merge remote-tracking branch 'upstream/master'

Conflicts:
	.gitignore
	Lumiverse/source/Demos/LumiverseDemo/test.cpp