[#1113] Allowing writing configuration settings.

Problem description
===================

We would like to allow writing configuration using an external API.


Changes description
===================

The previous code was an ugly hack and also insecure. Properties were exported using an implict rule.

To improve security, we only want to export selected attributes.

2 new attributes were defined for an interface: PublicAttribute and PublicWritableAttribute.

The configuration mixin will check the interfaces defined for an object and only export PublicAttribute and only allow writing PublicWritableAttributes.

The Attributes are also valid for section names.

This branch also include some drive-by renaming from HasSomething or SomethinBase to SomethingMixin.

------

This branch also included a proposed solution to replace the static/event.json files from utils, with custom error exceptions which have the message and event_id defined as attributes.

---------

For now only Public, Writable and Section attributes are exposed. If we feel comfortable with them we can augment those attribute to also define "short name", "help description", "accepted format". This should help with the GUI and reduce duplication... but I am not sure that this will work.

------

The documentation for how to expose the attributes to the API is a bit obscure, but I don't know where to place it. I feel like the interface is the right place.

I will try to hack a script to export the API documentation in HTML format so that it will be much easier to search code related docs.


How to try and test the changes
===============================

reviewers  @alibotean 

Check the changes and let me know if using Interfaces for defining what is exposed to the JSON-RPC API make sense.