compiler: cpp_field: add overloaded setter for optional fields
lib/cpp: fleshed out rest of protocol tests, JsonProtocol passing