Splitting the low-level ValueGeneration enum; Issue #704

From issue:

ValueGeneration.OnAdd means generate a value for the property in the state manager when the entity is put into the Added state. It doesn't have a direct impact on the update pipeline.

ValueGeneration.OnAddAndUpdate doesn't have any meaning in the state manager and doesn't make use of value generators at all. It tells the update pipeline that the value is computed on the store and so should always be obtained from the store for both inserts and updates.

These things are therefore orthogonal and don't really belong in the same enum. It might be cleaner to just have two bool flags on the API surface. For example, GenerateValueOnAdd and IsStoreComputed.