QtGreet v2.0.0

1. Custom User Icons
    We will use ~/.face or ~/.face.icon file to get the user icon failing which we will use the default image.
    To make the image have rounded corners use: Use the image as a brush, then draw a rounded rect with no pen.

2. QtGreet Widegt Factory
    Generate a widget given the name and type. Read the properties, and request the widget to apply the properties by itself.
    Following are the list of the widgets:
    1. UserName
    2. SessionName
    3. Password
    4. LoginButton
    5. Date/Time
    6.
    7.
    8.
    9.
    10.

    Every layout.hjson file should contain the first 4 widgets. Without them, you'll not be able to login properly.

3. Layout Manager using HJSON
    A simple HJSON file with a predefined set of keys will define the layout. We will use QBoxLayout to perform the actual layout of the
    widgets. Trials with default and sidebar themes have proved that this method is very effective.

4. Decouple GUI from Backends
    Currently, the greetd code in integrated with the GUI class. We have to decouple it and use a generic QtGreetBackend class to perform the
    various authenticaion/session lauching work.

5. Develop Backends
    We have to develop two backends, one for QGreetd and the other for LightDM.

6. Build a few default themes
   Currently, we have the following 4 themes
   1. Default
   2. Aerial
   3. Compact
   4. SideBar

7. Write a complete Theme and Layout Guide

8. Refactor all the widgets. Currently WidgetFactory applies all the widget properties. Each of the widgets should handle the properties by
    themselves.
