constructor support in OOP & minor changes to debug

OOP.js now supports singleton constructors by using the magic method name __constructor. If such a method exists, it is now automatically called after the singleton was built. Note that if a singleton is extended, right now the constructor is called again. This might change in the future.

The debug message is now sent to the webview earlier and Connichiwa now builds without the CWDEBUG flag being set
Rough native-less remote support

Remotes can now connect directly over a webbrowser, without a native layer
- If there is no native layer message for 5 seconds, the remote web library will now automatically connect the websocket
- If the remote runs native-less, it creates its own UUID and sends it to the master
- If a native message is sent on a remote and there is no native layer, the message is now ignored, but does not throw an error

There is still lots of stuff missing, including sending more information to the master like the device name, ppi, etc.
No delay anymore when connecting a native-less remote

The native layer now sets a global variable before the remote web library is loaded, so we can now check for a native layer on javascript-side onload and connect the websocket immediatly if no native layer is present.
Fixed a bug that caused OOP constructors to not have access to other classes
Changed the way remote device information is passed around

To make it possible to have native-less remote devices, the way that remote device information is passed around has been changed:
- Instead of passing only the identifier, the native layer now passes the entire local info dictionary to JS
- If no native layer is present, a “fake” local info dictionary is created by the remote library and passed to itself
- Regardless of the source of the local info dictionary, the remote library now saves its own information as a CWDevice
- Instead of passing only the remote identifier to the master, the remote library now passes all its information via a “remoteinfo”-type message
- If a master receives the “remoteinfo” message and no CWDevice was created for the remote yet (it’s native-less), one is created. If a device already exists, the message is handles as if it was a remoteidentifier message for now. This should be changed in the future.

This way, a native-less remote can send its remoteinfo, which will create a CWDevice on the master and therefore has a similair effect  to the deviceDetected message that is sent if a native-ful remote is detected via BT
Added CWSystemInfo

- JS can now detect the PPI of iPad’s and iPhone’s via CWSystemInfo.PPI() - all other devices will return the 96 DPI for now.
- Fixed a bug in the PPI detection of retina displays. Since they are retina, they have double the PPI of non-retina displays, but effectively use the same amount, so the same amount of PPI is now returned for retina and non-retina displays
- The CWDevice was moved to common, which was forgotten in the last commit
Added Gyroscope support

- CWPinchManager was moved to common
- Instead of sending a message itself, CWGestures now triggers a pinchswipe event. This event is picked up by the PinchManager, which in turn now sends the pinchswipe message
- When a pinch is detected by CWPinchManager, besides sending a pinch message locally, it now sends a wasPinched-typed message to the newly pinched remote. This message contains the device transformation of the pinched device.
- CWPinchManager now supports a isPinched() method that tells us if we are currently pinched to a master
- Added CWGyroscope, which uses the gyroJS library to get gyroscope and accelerometer data. For both, an event is triggered on each update (currently about once a second)
	- CWGyroscope is not used by CWPinchManager for now, working on it…
Added ability to quit pinches

CWPinchManager now receives gyro updates. If a device is tilted 20 degrees, it requests a quit from the pinch, which will return it to non-pinch state
Unpinch based on gyroscope

When a device is tilted while being pinched, it requests being unpinched from the master. This way, taking a way out of a pinch can be taken literally: taking it out of the pinch will automatically achieve this!
Fixed pinched device transformation

- A bug in the device transformation calculation was fixed. Pinched devices should now be fully working.
- viewport width and height were added to CWSystemInfo
- minor changes to gestures and pinching
- minimal-ui mode is enabled for remotes
minor changes