Add unique_id arg to event register/unregister

When registering an event handler, you can now specify any unique
token that represents the identity of that registration.  This
registration is global across all the events registered, and will
prevent any further registrations from happening with the same unique
token.

The design is borrowed from django's dispatcher that has a similar
idea with dispatch_uid.

A sample use case here is for registering events specific to a service
only when a service is created, but ensuring we don't reregister
the event each time the same service object is created (this will
be used for the upcoming retry configuration).


This depends on (https://github.com/boto/botocore/pull/70) which was sent as a separate pull request for clarity.