add: improvement for Entity::set()

set an entity property to its same value should not be treated as
`dirty`.