[BUGFIX] - Modified the icons of username inputbox and password inputbox in login.html.

* Description:
Wrong icons in the input boxes by mistake.
[ENHANCEMENT] - Added functions to check username and email availabilities.
[FEATURE] - User registeration page and functions.
[ENHANCEMENT] - Handle unique constraints in service layer.

* Description:
I believe rubbish data should never reach database layer. Another reason is,
Django will throw an IntegrityError if constraints were broken, so it may be
a little difficult to figure which constraint was broken. So I'd prefer handle
unique constraints in my own code although it will increase the total work load.