Separates gem file storage from HTTP request handling

I have separated the gem file storage handling code from the HTTP request handling code, to make it easier to store gems on the server, without going through the HTTP process.

With the current version, the class handling the HTTP requests (Geminabox) also handles the process of storing the gem. I have changed this so that Geminabox handles the HTTP requests, and then hands any uploaded content to a new GemStore class. The GemStore class then handles the storing of the gem.

With this in place, it then becomes a little easier to modify Geminabox to act as proxy. For example, see this gist:
https://gist.github.com/reggieb/d83cf98f9a2cb7893d49 

which is a follow on to this conversation: https://github.com/jesseadams/geminabox/commit/e60dbb906618ecc62aa956a973c6ca2bb08a11b0