Add 'aspect_id' for to identify aspects that has been applied to the target.

Add a concept of aspect_id: an unique string that identifies a
propagating aspect (aspect class + parameters).
This string is designed to be:
- Unique for each aspect
- human-readable for debugging purposes
- not easily parsable.

Skylark API:
- `ctx.aspect_id` returns an identifier of the current aspect inside
  aspect implementation    function
- `Target.aspect_ids` return a list of aspect ids for aspects applied to
  a given Target (https://www.bazel.io/versions/master/docs/skylark/lib/Target.html)

--
PiperOrigin-RevId: 141057865
MOS_MIGRATED_REVID=141057865
diff --git a/src/main/java/com/google/devtools/build/lib/packages/AspectDefinition.java b/src/main/java/com/google/devtools/build/lib/packages/AspectDefinition.java
index bda14e9..0878b2c 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/AspectDefinition.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/AspectDefinition.java
@@ -73,6 +73,7 @@
       @Nullable ConfigurationFragmentPolicy configurationFragmentPolicy) {
     this.aspectClass = aspectClass;
     this.requiredProviderSets = requiredProviderSets;
+
     this.attributes = attributes;
     this.attributeAspects = attributeAspects;
     this.configurationFragmentPolicy = configurationFragmentPolicy;