So because the commands have different parameters and are encoding differently, I need to have a name for the command type so I can use the correct `readFrom` function.

I could make the change to use `command.writeTo(...)` pretty easily, because all of the parameters are known, but then when I go to read the command, I need to know what to read (but all I know is that it's an AllocationCommand, not what type of allocation command it is).

I think I see why this was implemented as a Factory for retrieving the encoder/decoder, because then you can do lookups for a command by name (which is why the name is stored also) as well as register different commands.