libknc: rename ``struct knc_ctx'' to placate C++.

Because structures and types occupy the same namespace in C++, one can't
have:

	struct knc_ctx;
	typedef struct knc_ctx *knc_ctx;

So, we change it.  Now, ``struct knc_ctx'' is not exposed.

We also elide the last remaining reference to ``struct knc_ctx'' from
the man page.
libknc.h: guard against double inclusion.
libknc.h: surround most of it with extern "C" { } if using C++.