Add a PublicKey model

The model is going to support saving PublicKeys associated to members.
Add REST endpoints for managing PublicKeys

It is possible to add, list, and view details of PublicKey resources.
Each PublicKey resource is a subordinate resource to a Member resource,
i.e. it is impossible for the PublicKey to exist without being attached
to a Member.

Tests for the endpoints are included too.
Add a valid field to the Message model

The field will indicate whether the message is valid, i.e. whether the
Message's signature is valid for the user with which it is associated.
Add a signature field to the Message model
Implement method for verifying RSA signatures

The function is exposed through the ``crypto`` module of the chat
app.  This low level verification function can be used by different
clients later on for different message verification purposes, e.g.
chat message signature verification, join chat room request signature,
etc.
Add methods for validating a Message's signature

The methods provides an API to change its validity status based on
the correctness of the signature associated with it (i.e. whether the
signature matches any public key of the user that is claimed to
have created the message).
Add a hook for message validation after its creation

The tests are updated too to mock out the actual validation
and only assert that the validation was triggered by the SUT.