Bundler decoupling

With this PR bundlers are finally completely decoupled from the main business logic of creating the phar. Instead, they represent only ways to create a bundle which in turn can be added to the target phar.

A bundle represents the list of resources to be added to the target phar. This allows us to decouple the bundlers from actually knowing the target, and keeps their single responsibility to collecting the resources. Likewise, the responsibility for adding resources stays hidden in the target phar. Additionally, the PharComposer only needs to translate a package into a bundle, but doesn't need to know that actually bundlers are involved.