Added methods to the various native component types to allow implementation and API dependencies to be declared on the component instance instead of on the project's `dependencies` block, for consistency with the binaries.

Changed the `cpp-unit-test` plugin to behave more like the `xctest` plugin, so that it will compile and run the test suite when there is no component under test present, and to use a similar naming scheme for tasks and directory names.

Re-added a type to represent an executable built for tests implemented in C++.

Introduced an abstraction for a native component that has a development binary, and use this for libraries and applications, but not test suites. Removed the `developmentBinary` property from the test suite types.