Webmachine::Adapters::CryptosphereReel adapter

This is a reimplementation of Webmachine::Adapters::Reel which is mostly a
reworked version of the upstream code.

In addition to some refactoring, this adapter adds support for WebDAV verbs by
treating them like a POST request with a magical "_method" parameter. These
methods are used by git's smart HTTP protocol, so we need a way to support them
if we want to write a Webmachine-based git server.

The long-term goal of this adapter isn't for it to live inside of the
Cryptosphere forever, but to eventually get the changes back upstream into
Webmachine. In the meantime, this provides us a way to rapidly add features to
the adapter that the Cryptosphere actually needs without having to get all these
changes back upstream into Webmachine.
Use Webmachine::Adapters::CryptosphereReel adapter

This pulls in the latest Http Gem from Github, which is needed to support the
additional HTTP verbs Git uses.

It also flips Cryptosphere::App over to using this adapter
Initial Cryptosphere::RequestLogger

Logs requests via Webmachine to Cryptosphere.logger
Initial Cryptosphere::Git::Refs

Support for listing Refs from the built-in Git server. Presently only produces
an empty list for "example.git", but hey, it's doing it through Webmachine.
Fixups for Cryptosphere::Git::Refs

- Fixes Content-Type
- Webmachine will auto-gzip for us
- Gzipping was actually breaking the output
- Match git version in response
Nicer logging format

This uses a logging format inspired by Unicorn
Initial integration test for Cryptosphere::Git::Refs
Switch to Webmachine::Test

Nice, switching over was a breeze, and the code is a lot cleaner. Woohoo!
Initial Celluloid::Resource

A base class for all Celluloid resources, and also a more logical dependency
structure which centralizes the Webmachine-related components.
Cryptosphere::Resource DSL based on class_attribute

This simplifies declaring properties of resources by using a DSL which stores
properties using ActiveSupport's class_attribute

For the most part this maps quite cleanly onto Webmachine's existing API,
allowing certain fields to be declared at the class level in a somewhat
"Railsy" manner.
Simpler provide_encoding implementation
Better defaults for Cryptosphere::Resources

The previous changes broke static asset service. This change inherits
Webmachine's defaults in the event they haven't been specified by the DSL.
Specify allowed verbs with 'allow' or 'allow_method'

Extending the class-level DSL a bit more
Stubbed Cryptosphere::Git::ReceivePack resource

This resource doesn't actually do anything yet, but it provides the scaffolding
for receiving packfiles from Git clients
Move packfile into a fixture
Initial Cryptosphere::PktLine parser

The PktLine class is inspired by Git's pkt-line format. PktLines are
self-delimiting strings which are used by Git's protocol.

The API of the parser is inspired by djb's TNetstrings, which allow incremental
parsing of multiple concatenated TNetstrings by returning the remaining data
left to be parsed.
Merge pull request #5 from cryptosphere/git-server

Initial Git server