Extract Argot Message functionality into own file
Transform library data structure to Library class

The library structure is now stable enough that it can be solidified
into a class.

With the data structure there was an illusion of immutability, with
functions that took a library often returning a new version, but in
reality this was just plain mutability with the data structures modified
in place. This change replaces that illusion with clear explicit
mutability, in which function calls on the library object cause it to
modify itself in place.