Wire up library dependencies declared in CppSourceSet.libs as inputs to binaries.

- Changed NativeBinary.libs to contain NativeDependencySets instead of LibraryBinary.
- Added NativeBinary.lib() which accepts a NativeDependencySet, LibraryBinary or Library as input.
- Changed CppPlugin so that it wires each source set's libs and native dependencies as input libraries of each binary.
Added a good behaviour int test for the `cpp` plugin.
Added a couple of notes to the c++ spec.