This change fixes issues with LLVM_CONSTEXPR functions and TrailingObjects::FixedSizeStorage. In particular, some of the functions marked LLVM_CONSTEXPR used by FixedSizeStorage were not implemented such that they evaluate successfully as part of a constant expression despite constant arguments.
This change also implements a more traditional template-meta path to accommodate MSVC, and adds unit tests for FixedSizeStorage.
Drive-by fix: the access control for member of TrailingObjectsImpl is tightened.
Switch to use doxygen-style comments?