Initial drone controller interface.
Merge branch 'task/ui' into Dissasociation
Refactoring in progress...
Refactoring in progress...
Merge remote-tracking branch 'origin/Optimization' into refactor/interfacing
Documented KinectSensorController.
File name and namespace fixes. (...)

- KinectSensorControler.cs becomes KinectSensorController.cs (ABOUT DAMN TIME). Also, moved into KinectModule directory.
- KinectDeviceSettings is now part of the KinectModule namespace (because, you know, Kinect and all that).
Fix : .csproj not up to date with previous file renaming.
Added private static readonly settings to KinectSensorController.
Merge remote-tracking branch 'origin/Optimization' into refactor/interfacing

Conflicts:
	RideOnMotion/RideOnMotion/MainWindowViewModel.cs
Commit changes into TriggerArea.cs for zone creation.
Log exception message on ElevationAngle change. (...)

- Gets rid of warning.
Bound input menu.
Fix: Trigger zones now show even if Kinect disconnected (...)

- Trigger zones didn't show if Kinect was disconnected at start, because the zones were created when the Kinect is initialized.
Kinect status info (now input status info) updates correctly.
InputStatusChanged will be thrown once more on Start();. (...)

- Fixes Kinect sensor not being correctly updated when it's plugged in when launching the program.
Fixed name, revert previous commit (...)

- "Kinect" is now friendlier than "Kinect for Windows device", especially in text strings which shouldn't span the whole damn window
- Previous commit is now null'd as the correct way to get the InputStatusString was simply to ask kindly the controller
Kinect API exception details, Menu.IsEnabled now updating.
Refactoring complete! View all changes here. (........)

- Added interfaces:
  * IDroneInputController: Controller for drone input methods. Sends commands to an IDroneController.
  * IDroneController: Controller for a drone. Handles connection with the drone, and sends commands to it.
- Fully separated Kinect sensor from outside the Kinect module.
- IDroneInputController can be used for any input type. Kinect, Joystick, keyboard, etc.
- Separated KinectModule's TriggerArea into its own file.
- Now handling Kinect-specific UI (the hands and buttons) into its own file in KinectModule.
- Input controllers can specify their own UI, which will be displayed as a control on the main panel.
- Input controllers can specify their own Menu, which will be added to the top once the controller is constructed.
- Input controllers can specify their own BitmapSource, which will be displayed on the top left of the window. Used here for depth image.

Also, today's joke, bitch:
A programmer’s wife sends him to the grocery store with the instructions, "get a loaf of bread, and if they have eggs, get a dozen." He comes home with a dozen loaf of bread and tells her, "they had eggs."
Merge branch 'refactor/interfacing' into develop