[BUGFIX] Allow all commands to be associated on the wire

Give commands an internal ID used when they are requested. In the case of components, this is only useful for the original request, and is superseded by the component ID when it is provided by the server.

Also add some test coverage to the XMPP connection while we're fiddling here, and remove some dead code that resulted from the low test coverage.
[CS] Log commands failing state transitions
Fix some spec breakage introduced by new non-matching attributes on commands
[BUGFIX] Ensure a command is always transitioned to is requested state prior to receiving a response
[BUGFIX] Assume request IDs can be UUIDs
Implement request ID generator
Revert "[BUGFIX] Assume request IDs can be UUIDs"

This reverts commit 72d91b2962e08d2886903964b69f2b3ed0bc70d0.
[DOC] Changelog entries
[UPDATE] Bump to 2.3.1
Merge branch 'release/2.3.1' into develop
[BUGFIX] Component state transition thread safety

Ensure that components receiving a response and a complete event in quick succession cannot overlap, such that the component fully transitions to the executing state before beginning to transition to complete.
[FEATURE] Add support for URI attribute to Dial command
[FEATURE] Allow generation of a random call URI for a client
[FEATURE] Support for dial requests with a URI on Asterisk
Merge pull request #212 from adhearsion/feature/dial_specify_uri

Support dial pre-assigned URIs
[FEATURE] Rayo events should be timestamped with dispatch or receipt time

If an XEP-0203 (Delayed Delivery) tag is included, we use it's timestamp; otherwise, we use the time of receipt.
[FEATURE] Copy timestamps from AMI events to Rayo events for signalling

Ringing, Answered, Hangup, Join, Unjoin, etc
Merge pull request #213 from adhearsion/feature/timestamped_events

Support timestamped Rayo events
[UPDATE] Bump to 2.4.0
Merge branch 'release/2.4.0' into develop