Message persisting logic in this diff:
- Saving a message to the database on gRPC `Send` request before the AMQP message is pushed to the RabbitMQ to make sure that the message is persisted and we don't rely on the rabbitmq delivery only.
- Retrieving the messages for the `deviceID` from the database on `Get` request first and delivering them to the device.
- After retrieving messages from the database, wait for the messages from AMQP message broker.
- On message broker (AMQP) message delivery, delete that message from the database by unique messageID.