Updated dependencies, downgrade scala for incremental compiles.
Added message signing.

Also, DeviceInfoMessage is now sent on connect for key exchange,
new abstract class Message is superclass of all message
implementations.

Multiple minor reformats/refactorings.
(De-)serialize message to/from byte array instead of stream.

This lets us get rid of seperate `getBytes` function for signing,
and is needed for end to end encryption.
Require device ID to have correct format using regex.
Moved exit button to ContactsFragment so it isn't shown when chat is open.