Add librato-metrics stream.

Supports gauges, counters, and annotations, including starting and
stopping annotations with separate events. See
riemann.librato/librato-metrics for an example.
Switch to new protobuf parsing path.

Improves UDP and TCP single-threaded throughput by ~ 11%.
riemann.time.controlled: CONTROL FUCKING TIME.

http://d36xcvrkegf0f1.cloudfront.net/images/worlds/2849/Relativity_002.jpg

I've had it up to here trying to test multiple threads interacting with
side effects against wall-clock time. This is a slow, painful idea under
the best possible conditions, subject to all manner of race conditions,
fuzzy results, and alignment issues. On Travis-CI, basically every test
run is failing. However: we cannot ignore wallclock time altogether!
Some things in Riemann need to proceed On Schedule (TM).

riemann.time.controlled provides a clock and a task scheduler based on
concurrent skiplists. The clock only advances, and tasks are only
executed, when calls to (advance!) are executed. This clock is
resettable. It also formalizes the interface to Tasks.

(time.controlled/advance! t) is synchronous and thread-safe. Multiple
threads may advance the clock and execute tasks at the same time... if
you... like doing that sort of thing.

Next, I'll introduce riemann.time, which will take over from (unix-time)
and riemann.periodic. It'll be the authoritative namespace for
interacting with wall clocks in Riemann.

riemann.time will, by default, use functions from riemann.time.real,
which will schedule tasks and obtain times from the JVM's wall-clock and
high-resolution time sources. A threadpool in time.real will manage
execution of scheduled tasks.

Test suites will redefine functions in riemann.time to their
riemann.time.controlled variants when they need to test periodic side
effects.
riemann-clojure-client 0.0.4
Remove old freenode auth file.
Early stab at a new wall-time scheduler; WIP.
Expand tests for riemann.time.
riemann.time and riemann.time.controlled cooperate.

Both tests pass now.

Mostly.

Use lein test :time to verify that the timing system works
correctly. These tests are excluded from the default set because they're
slow and unstable.
Massive refactoring of time-based streams and tests.

The vast majority of the test suite now uses synthetic clocks provided
by riemann.time.controlled. The test suite is significantly faster and
more reliable.

Almost all uses of threads and all use of riemann.periodic has been
replaced by the riemann.time scheduler--the only exception, I believe,
is the index reaper thread which could have potentially expensive
behavior.

Minor cleanup to namespaces definitions and some formatting/variable
name changes. Replaced the use of refs with atoms and simplified
streams/periodically-until-expired.
riemann.time: minor formatting & notes
* document how to log to stdout
Merge pull request #48 from jib/log-to-stdout

* document how to log to stdout
* mention how to do it on windows as well
Merge pull request #50 from jib/log-to-stdout

* mention how to do it on windows as well
Add riemann.pool: a mutable resource pool.

Where side effects matter, like working with sockets, riemann.pool
provides a fixed-size resource pool which automatically retries and
yields resources with adjustable timeouts.
riemann.pool/with-pool: fix an issue with destructuring bind.
riemann.graphite uses riemann.pool

This should fix the reconnection and liveness issues with the old socket
system and provide the higher throughput of the
arrayblockingqueue-of-sockets implementation. Also makes the code much
simpler. Tests with graphite, both automated and live, show resilience
to transient and long-running failures, including flapping.