Branch for work on JSON-based config.

--HG--
branch : jsonConfig
Initial work towards config file.

--HG--
branch : jsonConfig
Move everything we need to create a device into "options" in the config file, and pass these directly to the constructor.

--HG--
branch : jsonConfig
We get a 'unicode' not a 'str' from passing the config file.

--HG--
branch : jsonConfig
Move the easy things into the config file.

--HG--
branch : jsonConfig
We always call these things on a listener just after creating it, so we may as well call them from inside the constructor.

--HG--
branch : jsonConfig
Register the controller as a dispatcher for all devices that support it.

--HG--
branch : jsonConfig
Allow keyword arguments to be passed in to things; pass them a controller, which is to be used by the listeners (at the moment, anyway).

--HG--
branch : jsonConfig
Make 'devices' a list rather than an object; order matters, since some devices will depend on others.

--HG--
branch : jsonConfig
Configure a listener for a VP88...

--HG--
branch : jsonConfig
Also configure a 602 listener. Just the pesky blinds and screens to move to the config file now!

--HG--
branch : jsonConfig
Configure relay stuff through the new config file.

--HG--
branch : jsonConfig
Fail with a message if we can't parse the config file for whatever reason.

--HG--
branch : jsonConfig
Don't redefine loop variable within the loop. Bad jrem.

--HG--
branch : jsonConfig
Encapsulate device creation in a static method within Device.

--HG--
branch : jsonConfig
Update README with new configuration details.

--HG--
branch : jsonConfig
Do markdown properly.

--HG--
branch : jsonConfig
Fix up tests.

--HG--
branch : jsonConfig
Who thought that giving Listeners the same deviceID as their parent was a good plan? *facepalm*

--HG--
branch : jsonConfig
json config tested and working, ready to merge to default.

--HG--
branch : jsonConfig
extra : close : 1