perf(Change Detection): Track the range & group on changes only

There is no need to track the range & group for all the records but only
for the records that have changed.
perf(Change Detection): remove the usage of getters/setters

- Firefox is 2.4x faster (90 vs 221ms)
- Chrome is 24% slower (15.5 vs 12.5ms)

Chrome is still 5.8x faster than Firefox
perf(Change Detection): inline isPresent() & isBlank()

- isPresent() -> !== null
- isBlank() -> === null

- 20% faster in Chrome
- Firefox is about the same speed.