Initial proposal for DeltaInstanceInfo

Do we need to use reflection here? This means that:

- Instance Info is mutable.
- It is not intuitive for people to know how Instance Info is mutable.

An alternative way could be to have pass the `InstanceInfo.Builder` in this method which has methods like `withXXX()` that can be used. eg: for `ApplicationGroup` this method will call `builder.withApplicationGroup(value)`

So, the final abstraction would be:

```java
public class InstanceInfoField<T> {

    public static final InstanceInfoField<String> APPLICATION = new InstanceInfoField<String>(new Updater<String>() {
        @Override
        public void update(InstanceInfo.Builder builder, String value) {
            builder.withApp(value);
        }
    });

    public static final InstanceInfoField<String> APPLICATION_GROUP = new InstanceInfoField<String>(new Updater<String>() {
        @Override
        public void update(InstanceInfo.Builder builder, String value) {
            builder.withAppGroup(value);
        }
    });

    private final Updater<T> updater;

    public InstanceInfoField(Updater<T> updater) {
        this.updater = updater;
    }

    public InstanceInfo.Builder update(InstanceInfo.Builder builder, T value) {
        updater.update(builder, value);
        return builder;
    }

    private interface Updater<T> {

        void update(InstanceInfo.Builder builder, T value);
    }
}
```