* Add check for duplicate adapt intents
There are two cases, duplicated named intent and duplicated anonymous intent.
A named intent will cause a ValueError exception notifying the skill
author that there is a collision.
An anonymous intent will silently derive a new name and use that
instead of the default generated one.
* Add tests for intent collisions
* Make enable/disable intent handle the new exception
The enable/disable intent did not mark an intent as detached, instead it
remained in the list of intents after disabling in the IntentServiceInterface
to be retrieved when the intent should be re-enabled.
This moves detached intents into a list of detached intents to so they
won't cause the double enable exception.
* Add move logic to find if intent is detached
MycroftSkill.enable_intent() will now check if the intent is detached
before trying to re-enable it.
* Lock updates of intents
This should avoid some race conditions that may occur if multiple
threads tries to enable / disable intents
This changes the internally used names for entities and entity values when
sent on the messagebus and used interanally in the intent service from start / end to entity_value and entity_type.
This makes the terminology easier to understand and follow across into Adapt.
The old terms are still included and usable for compatibility but should be
removed in an upcoming major release (22.02).