Propertyguizeug cleanup

things done:
* revised all classes regarding whitespace and minor style
* revised all editors
* revert implicit variant interface of `EnumProperty` because
  * variants are not meant to be used like that
  * explicit is faster and less error prone (compile time checks)
* introduce `PropertyEditorPlugin` and `PropertyPainterPlugin` and subsequently
  * move editor paint code to editor classes
  * adapt `PropertyBrowser` and `PropertyDelegate` 
  * move affixes code (number properties) to editors

Tested on Windows and Mac.
Solves #83.

__Info about `PropertyEditorPlugin` and `PropertyPainterPlugin`:__

You can know add your custom Editors as well as paint code by complying to the following implicit interface:
```C++
using namespace reflectionzeug;
using namespace propertyguizeug;

class CustomType;

class CustomTypeEditor : 
    public PropertyEditor // inheritance from PropertyEditor optionally, must however inherit from QWidget
{
public:
    using Type = Property<CustomType>;
    
    // only needed if you want to add custom paint code
    static void paint(
        QPainter * painter, 
        const QStyleOptionViewItem & option, 
        Property<CustomType> & property);

    CustomTypeEditor(
        Property<CustomType> * property,
        QWidget * parent = nullptr);
};
```

You can then add your Editor like this:
```C++
PropertyBrowser browser;
browser.addEditorPlugin<CustomTypeEditor>();
browser.addPainterPlugin<CustomTypeEditor>();

// note: if you have multiple editors to add, pass all editors as params to the PropertyEditorPlugin template
browser.addEditorPlugin<CustomType1Editor, CustomType2Editor, CustomType3Editor>();
```