Handles cyclic references (Issue #41)

Additionally:
- Fixed refresh method to refresh all the children at the end of the current execution stack, but stack them in parallel rather than having the pushed function push the child
- Caching getValue function in Eval
- Check if child is already a child before adding it (prevents duplicates)
- Added "debug" function for quickly identifying and debugging only certain functions (good in unit tests) -- this function is mostly just for developers of the library... in the future it should be stripped from the library for release builds