In "safe" mode, context tracks cryptographic hashes of env

- added joblib dependency
- removed blinker dependency
- added context safe/unsafe option (safe by default)
- objects are now hashed using joblib.hashing.hash
- subclassed ReactiveExpression/ReactiveObserver from _ReactiveCallable
- added preliminary unit tests for hashing (more later)