Implement heartbeat

Closes #1 
As mentioned IRL, this test is brittle due to the way it uses mocks and stubs. There's a rule when mocking and it says "don't mock things you don't own" - I believe Avdi said this once although I don't think he came up with it, either way it's good advice.

But I do get why it was done as you could want to use the TCP or UDP version of Rieman so it's encapsulated here. Rather than doing it this way and using all these mocks, there's an alternative way we could accomplish the same work:

```ruby
class Rieman::Client
  def initialize(rieman_client)
    @client = rieman_client
  end
end
```

This way, the tests would be simplfied and all the logic around the mocks wouldn't be needed. However, in order to maintain the flexibility of deciding whether to use Riemann with TCP or UDP, we can use a auxiliary constructor to help out:

```ruby
class Riemann::Client
  def self.riemann_with_tcp(host, port, timeout = nil)
    new ::Riemann::Client.new(host: host, port: port, timeout: timeout).tcp
  end

  def self.riemann_with_udp(options)
    new ::Riemann::Client.new(host: host, port: port, timeout: timeout)
  end
end
```

The only other minor thing here now is the double meaning of "Riemann::Client" - might be useful to maybe use another word for this, maybe `Riemann::Connector` - But this is minor and probably would just keep the name as is.