Correctly update userlist on rank changes

This fixes #8 by watching the rank for the user in the user directive.  This
means that the user's rank will automatically be updated whenever they get
a rank change, including the initial join on the channel.

This also changes the ranks for a user from an array to an object, as the
array was actually being used as an object.