Set tmpRoot on tree if tmpRoot provided to builder

I know this needs tests, but I wanted to start the discussion. This is for #202.
Seems like its in the same closure scope as the `readAndReturnNodeFor` function below.  Why do you have to pass `self` in here (seems like you could just use `self ` in the `readAndReturnNodeFor` function below)?