Refactor: pluggable backends

This is a big refactor.

Primarily, this PR adds pluggable backends:
- `UDPBackend` which actually sends UDP packets. Default in *production* environment. 
- `LoggerBackend` which will log every StatsD call. Default in *development* environment.
- `NullBackend`: black hole. Default in *test* environment.
- `CaptureBackend`: a backend that can be used to capture StatsD calls so you can run assertions on it. (See testability below.)

All the stuff that is shared between backends now lives in the `StatsD::Instrument::Metric` class. This includes default values, prefix handling, cleaning up tags, etc. The `StatsD::Instrument::Environment` class contains all the ugly environment detection to find a default backend for your environment.

### Better testability 

I've had some questions about how to test StatsD calls, and ran into issues with stubbing. With the CaptureBackend, testing becomes a lot easier. You can include the `StatsD::Instrument::Assertions` in your test cases. In it, `capture_statsd_call` uses the capture backend to capture StatsD calls. You can then run assertions on it. The module also includes some assertions methods that should cover 90% of the cases:

``` ruby
class MyTest < Minitest::Test
  include StatsD::Instrument::Assertions

  def test_my_statsd_counter
    # `times` is optional; by default it expects just one matching call.
    assert_statsd_increment('counter', tags: ['a'], times: 2) do
      StatsD.increment('counter', tags: ['a'])
      StatsD.increment('counter', tags: ['a'])
    end
  end

  def test_no_udp_traffic
    assert_no_statsd_calls { do_a_bunch_of_work }
  end

  def test_more_complicated_stuff
    metrics = capture_statsd_calls do
      StatsD.increment('mycounter', sample_rate: 0.01)
    end

    assert_equal 1, metrics.length
    assert_equal 'mycounter', metrics[0].name
    assert_equal :c, metrics[0].type
    assert_equal 1, metrics[0].value
    assert_equal 0.01, metrics[0].sample_rate
  end
end
```

### Other things of note

- Drops support for Ruby 1.8.
- Tests are ported to Minitest, and increased coverage.
- `StatsD.mode` and `StatsD.enabled` have been removed.
- `StatsD.implementation`, `StatsD.server`, `StatsD.host`, `StatsD.port` settings are moved to the UDP backend, but they are preferably set using environment variables.
- Final remaining singleton state variables are `StatsD.default_sample_rate`, `StatsD.prefix`, `StatsD.logger` (initialized to `Rails.logger` if available), and `StatsD.backend`, the currently active backend.

### Points for discussion

- For now, the different protocol variations and features are still all implemented in a single class (UDPBackend) with if statements. Potentially we can make them separate backends.
- Instead of exceptions, the library now warns (to `StatsD.logger`) if you use features that your implementation does not support. I changed this because the library should not raise exceptions.
- The main API is the same as before, but the API for configuring the has changed. So we probably should do a major API version bump. Do we want to change anything else if we do a major version bump with backwards incompatible changes?