Add locking while refreshing SMART data; rework how SMART data is updated
Add a basic test / example program for python bindings