Add better docs to Weyland::Configuration.
Refactor and document CProgramTarget.

We were using CProgramTarget as a Target via duck typing
before, however we can simplify a lot of things if we make
CProgramTarget inherit from Target.

Should resolve the code climate issues.