Add PropertyRegistry to remove global state from DIProperty

`DIProperty` 2.* interface remains unchanged.