Add graphite client protocol, add UDP support
Merge branch 'master' into graphite-improvements
Change send! to send-line, add documentation for :protocol option, better docstrings
Add delete-by stream primitive and test case
Ignore site/
Merge pull request #107 from PeterScott/master

Fix graphite-server method name bug
(rate) emits events constantly.

Rate used to emit events only when it received events. I've rewritten
rate to emit events with zero metrics when no events arrive in a given
time frame. In addition, event TTLs decay correctly when no events
arrive, so rates will continue operating while the ttl is valid, then
shut down correctly when the index expires their output events.

I need to rewrite some other real-time streams (e.g. percentiles,
fill-in) to have similar behavior.
Merge pull request #101 from lwf/graphite-improvements

Graphite client improvements
Merge pull request #102 from campanja/delete-by

Add delete-by stream primitive and test case
(streams/delete-from-index can also take a predicate.

Merges delete-by's behavior into delete-from index. (delete-from-index
index [:host :state]) is a stream which deletes matching events from the
index.
Remove streams/delete-from-index and streams/update-index.

Nobody is using multiple indexes, and having 3 copies of these functions
was getting confusing. riemann.core deletes and updates a core's index,
and riemann.config proxies to it. Configuration files will be unaffected
by this change, unless they explicitly referenced
streams/delete-from-index or streams/update-index.
Add riemann.common/deprecated

A macro which logs a deprecation notice when invoked.
riemann.config/include takes relative paths.

(include "foo.clj") evaluates the file "foo.clj" relative to the
current config file. This makes breaking up configurations into multiple
files easier.

There's also a *config-file* path which gives the config file currently
being evaluated.
Coalesce now emits expired events, once.

Before, coalesce would remove expired events from its internal state
table and not pass them on. This could prevent downstream streams from
handling expiry properly. Now, when events expire from coalesce's state
table, the expired events are submitted to children once.
riemann.email/mailer correctly handles smtp options again.

Closes #128. drewr/postal has a two-argument form which separates smtp
and message options. For compatibility, mailer can extract those options
for you. This means folks can use smtp emails again.

Also, bumps drewr/postal's dependency to 1.9.0.
riemann.email/mailer takes :subject and :body overrides.

You can pass :subject and :body functions to the msg-options for a
mailer. These functions format lists of events and return a string, used
for the subject (or body, respectively) of the emitted email.

Closes #108.
Includes a few riemann.time functions in riemann.config.

Config now has access to unix-time, linear-time, once!, and every!.
Closes #120.
(streams/top): streaming top-k

(streams/top 2 :metric index prn) indexes the top 2 host/service pairs
by metric, and prints events which are *not* in the top 2. Closes #119.

Also introduces (common/expire), which returns an expired copy of an
event, and (streams/dual pred true-stream bottom-stream), which
maintains a pair of streams, one for (pred e) and one for (not (pred
e)), making sure that both have a consistent view of the world.
Remove a comment
Note that (top) won't expire displaced events.