update for Elixir 0.14.3

Prior to this commit, the distributed programming exercise had relics
from Elixir 0.13.0, which @chrismccord used to create the exercise:
 * `defrecord`
 * `String.to_char_list!`

This commit replaces the records with structs, and as a result makes
some hacky compromises with the json decoded from `:jsx`; however,
potentially converting to `:jsex` seemed too large an undertaking. This
commit also updates `String.to_char_list!` to `String.to_char_list`
because `String.to_char_list!` was deprecated and removed.
I know this part is ugly. Would love feedback on more elegant way.