support CMAKE_<LANG>_... variables

#197 , solve the LANG issue first,

the PROJECT is harder, will solve it later after this pull request.
> nothing expensive at this stage, but in next pull request

Then please leave caching out of this pull request, because there's not enough context to judge its necessity or implementation.

> I think recursive search the directory and grep each CMakeLists.txt could be expensive.

Probably. But then you could use the cache variable to store a path/project name alist. Maybe invalidate the entries based on directory mtimes, I'm not sure. As long as `cmake --help-*` outputs stay the same and substitution is fast enough, no need to include them in this cache. Or maybe fetch those lists once and some to some other var, in order not to call `cmake` every time.

> the cache will be invalid if user switch to another project, I assume user will have a rest for ten minutes before switching project

This sounds very fuzzy. There's no reason to expect users will rest for 10 minutes.
So I'd try the mtime approach first, and if it doesn't work, lower the cache time to 1 minute.