Merge C++ rewrite of Chai high-level API

Rebased by da2ce7. Tested on Mac, Windows, Linux, and by Randy, myself, and Eric.