Creates an API for ScalaPlugin

ScalaPlugin has to be a concrete class for the Eclipse platform, so the implementation has been moved in the `internal` package.
In the public package, there is a trait with the API method of ScalaPlugin, and an object with a singleton, to follow the usual Eclipse design.
Most of the helper methods which were in the ScalaPlugin class and object have been moved to better location: helper classes, or related companion objects.
I kept `plugin` so it is source compatible, and it is the 'standard' in Eclipse world.
But it is a good time to mess up things if we want to.

I feel a bit weird about using `apply()`, for me they are mostly factory method. But It does work, because the factory method of a singleton returns always the same instance.
`instance` is fine too.