Use a GArray for player commands instead of a cbuf_t

Break player command handling into its own module