Initial draft of version 3

I wanted to get more eyes on this at this point as the bulk of the rewrite is complete. Just needs some additional tests for the console reporter. Code coverage at 93.20%.
pull the try/catch into a new function for `tryStringify` that way only that function doesn't have to be optimized and it can also fallback to safe stringify