Implemented a very basic plugin system.

The way this works is pretty much the same way as `git` commands work.

When invoking `bundler <task>`, if the task isn't defined on Bundler::CLI,
Bundler will try and figure out if there is a `bundler-<task>` binary
present on the path. If so, it's invoked.

Same error message (and error codes) apply when a binary isn't found.

Also, this is just a first, simple pass at the problem. @indirect and I
had a chat about how it should work, and we should probably think about
offering the possibility of loading up Ruby plugins in the already
loaded Bundler environment.
Merge pull request #3039 from Who828/master

Switch from UnixWorker to ThreadWorker for MRI
Handle s3 source
Add specs
Update changelog
Rewrite unless case flow with positive case first.

Small change for readability as advised by PullReview. Using unless
with else makes the code more difficult to follow as the else part is a
double negative. This commit rewrites the flow with the positive case
first.
Merge pull request #3087 from nickpellant/master

Rewrite unless case flow with positive case first.
Merge pull request #3086 from tryba/s3-auth-support

bundler/bundler-features #46: S3 source support
Move add_basic_auth method into the appropriate block
Merge pull request #3090 from tryba/s3-auth-support

Move add_basic_auth method into the appropriate block
Add spec around adding a binstub for an unknown gem
Merge pull request #3094 from jetaggart/master

Add spec around adding a binstub for an unknown gem
Fix unknown constant error

When the binstubs command loads, cli/common is not loaded which causes it to error out when a gem is not present
Merge pull request #3095 from jetaggart/1-6-stable

Fix unknown constant error
update changelog
Support read-only git gems (fixes #3092)
Refactor test to use with_read_only helper
Merge pull request #3097 from pmahoney/fix-read-only-git-gems

Fix read only git gems
Use ThreadWorker on Rubinius.

Rubinius doesn't have a GIL and has proper support for threading. As such
Bundler can use the ThreadWorker class instead of the UnixWorker class.
make bundler as fast as bundle