Adding binding cache and per-property cache (#1)

- Added cache on the bindings to avoid re-computing them
- Added cache on the properties so that only the ones changed are computed

This addesses issue #1