Describe "cpp-option" field

Solve, to some extent, https://github.com/haskell/cabal/issues/646.

I've mostly added comments from source code and https://github.com/haskell/cabal/issues/156 issue, so any clarifications from moke knowledgeable developers may be relevant.