King Charles was called "woke" by Boris Johnson in a disagreement over Britain's colonialist past, a new book has revealed.