Each NativeBinary instance is associated with a lifecycle task

- Introduced BuildableModelElement (and AbstractBuildableModelElement) for
  a model element that is buildable and has an associated lifecycle task
- Replaced NativeBinary.builtBy() with implements BuildableModelElement
- BinariesPlugin creates a lifecycle task for each NativeBinary
- Link/Assemble tasks in CppPlugin now depend on Binary, and thus the lifecycle task
- Replaced ClassDirectoryBinary.getClassesTask()/setClassesTask() with BuildableModelElement.setLifecycleTask()
Renamed task CreateStaticLibrary -> AssembleStaticLibrary