JSON encoder: make sure to serialize `datetime` objects
Views: added generic CBV for creating internal REST APIs

This is a custom implementation based on https://github.com/af/djangbone.
Views: refactored into a mixin code to require current user's field

The mixin is more general too, as it allows to require matching an
arbitrary user field.
Refactored contact form CSS into reusable pieces
User: added field labels
User: aligned field label capitalization
User: revamped the profile editing page

The 'Profile' tab from the user account page has been removed and the form
that was living there has been moved to a lightbox window. Now users are
able to quickly edit their public profile by clicking the edit button from
their public profile pages.

The profile editing lightbox is also available at a bookmarkable URL
accessible at `/user/<username>/edit/`.

Fixes #225.
User: added help text for the email field
Fixed help text CSS
User: aligned profile URL pattern naming