Kconfig updates for v4.16

A pretty big batch of Kconfig updates. I have to mention the lexer
and parser of Kconfig are now built from real .l and .y sources.
So, flex and bison are the requirement for building the kernel.
Both of them (unlike gperf) have been stable for a long time. This
change has been tested several weeks in linux-next, and I did not
receive any problem report about this.

Summary:

- Add checks for mistakes, like the choice default is not in
  choice, help is doubled

- Document data structure and complex code

- Fix various memory leaks

- Change Makefile to build lexer and parser instead of using
  pre-generated C files

- Drop 'boolean' keyword, which is equivalent to 'bool'

- Use default 'yy' prefix and remove unneeded Make variables

- Fix gettext() check for xconfig

- Announce that oldnoconfig will be finally removed

- Make 'Selected by:' and 'Implied by' readable in help and
  search result

- Hide silentoldconfig from 'make help' to stop confusing people

- Fix misc things and cleanups