An immutable representation of the metadata that describes an actual value.
This may be a value a function is capable of producing, or describe a resolved value passed into a function to satisfy a {@link ValueRequirement}.
For example the {@code ValueRequirement} for a currency converting function may state a constraint such as "any currency" on its input values. After the graph has been built, the actual value willbe specified including the specific currency. Similarly a constraint on a {@link ValueRequirement} might restrict the function to be used (or the default of omission allows any) whereas the{@link ValueSpecification} will indicate which function was used to compute that value.
This class is immutable and thread-safe.