Fix compiler warnings in generated C++

  - Introduce a C++ AST node to represent macros
  - Use that node to remove superfluous semicolons after macros
  - Add a trailing newline after headers

Bug: 27330880
Test: unittests pass

Change-Id: Ie79997a46549181eb9d5a744ec3df5cc28180cf3
6 files changed