Add support for resources whose definition changes after they were first
registered.  This allows one to add, for example, new remote attributes
or methods, perhaps due to a software update.  The next time that resource
is registered, the attributes/methods will be sync'd with what is in
LiveResource.

lib/live_resource/methods.rb:
  Always try to register the resource in redis instead of returning
early if it was already registered.

live_resource/redis_client/attributes.rb:
live_resource/redis_client/methods.rb:
  register_attributes/methods will now delete the key first prior to
'sadd'ing to it.  The del is necessary in case the resource definition
change resulted in something being deleted.  Added comments about how
this method should be called from a transaction and because of that we
don't do a 'diff' with what is in redis (i.e. because we need to know
the diff right now and not when 'exec' is called).

live_resource/redis_client/registration.rb:
  Diff the new definition with what is in redis so that only the
commands that need to be executed are set to be executed.  'exec' is
always called, as opposed to calling 'discard' if there are no redis
commands to run, because 'discard' does not protect against the
situation where a watched key has changed.

  The 'created' event is now only published if the resource is indeed
being created.  'updated' is now published if the resource was already
registered and something changed.  If the resource was already
registered and nothing changed, no event is published.

registration_test.rb:
  Expand the registration unit tests to test the new functionality.