Adds binary serialization/deserialization

This adds binary serialization/deserialization for macaroons. I verified that the serialized text is the same as for the python library. (A little more work should be done - serializing a macaroon with first and third party caveats and loading them into the python library along with discharge macaroons and vice-versa).

Wouldn't mind suggestions on the creation patterns here. The external interface is good (I think) but the internal passes a lot of nils around (I guess that's fine, though).

Example:

```ruby
m = Macaroon.new('123', '456', 'http://localmed.com')
m.add_first_party_caveat('caveat_1')
m.add_third_party_caveat('caveat_key', 'caveat_id', 'http://localmed')
n = Macaroon.from_binary(m.serialize)
m
=> #<Macaroons::Macaroon:0x007fc08d0bc368 @raw_macaroon=#<Macaroons::RawMacaroon:0x007fc08d0bc1d8 @key="123", @identifier="456", @location="http://localmed.com", @signature="WE\xFE3\x0E=&zEFP\xC8>,\xE7\xF61Nh\xC5$\xEC\xA9\xEE\xA5\xFD\x90\x82&\xF4\x9B\x18", @caveats=[#<Macaroons::Caveat:0x007fc08d0d75c8 @caveat_id="caveat_1", @verification_id=nil, @caveat_location=nil>, #<Macaroons::Caveat:0x007fc08d0ec1a8 @caveat_id="caveat_id", @verification_id="sovf8T2TAjnxWDvVFSR5MLQ1ukPwndwkTzBCjjqU6btaFAL+Y+ini3SIna1s\nluU2c3SDRB8+GlfzJLk6fBuDcbY1vetjDLul\n", @caveat_location="http://localmed">]>>
n
=> #<Macaroons::Macaroon:0x007fc08d10db00 @raw_macaroon=#<Macaroons::RawMacaroon:0x007fc08d10da60 @key=nil, @identifier="456", @location="http://localmed.com", @signature="WE\xFE3\x0E=&zEFP\xC8>,\xE7\xF61Nh\xC5$\xEC\xA9\xEE\xA5\xFD\x90\x82&\xF4\x9B\x18", @caveats=[#<Macaroons::Caveat:0x007fc08d116958 @caveat_id="caveat_1", @verification_id=nil, @caveat_location=nil>, #<Macaroons::Caveat:0x007fc08d115c88 @caveat_id="caveat_id", @verification_id="sovf8T2TAjnxWDvVFSR5MLQ1ukPwndwkTzBCjjqU6btaFAL+Y+ini3SIna1s\nluU2c3SDRB8+GlfzJLk6fBuDcbY1vetjDLul\n", @caveat_location="http://localmed">]>>
```

@joeljames @petebrowne