don't sort gems every time you add one

geminabox is basically unusable with large gem collections.
This helps to relieve that by only sorting GemVersionCollection once
upon initialization, instead of every time a gem is added.
Expand on Nat Williams' work on GemVersionCollection

It's now considered immutable, and I've massively cut down the API footprint.
Fix .gem file permissions problem.

Tempfile.new makes files with permissions of 0600[1]. This means that if
the webserver is running as a different user, the newly uploaded .gem
file won't be readable. This patch adds a chmod to the atomicwrite
function.

1: http://www.ruby-doc.org/stdlib-1.9.3/libdoc/tempfile/rdoc/Tempfile.html#method-c-new
Version bump.
Fixing a bug with older versions of httpclient.

We see this issue when trying to publish a gem with an older version
of httpclient (2.1.5.2). When using a newer version (2.2.7) it publishes
just fine.
  $ gem inabox
  You didn't specify a gem, looking for one in . and in ./pkg/...
  ERROR:  While executing gem ... (ArgumentError)
      wrong number of arguments (1 for 2)
Merge pull request #83 from ashirazi/master

Geminabox does not work with older versions of httpclient.