streams/ddt: fix some edge case bugs
streams/smap ignores nil values

streams/smap* preserves nil values, like smap used to.
riemann.folds: total redesign of semantics.

Most folds now come in a friendly (sum) and a strict (sum*) variety,
intended to do sane, informative, correct things under common
circumstances like being asked to reduce nil events or events with nil
metrics. Should close #157, I believe. May do some fine-tuning before
release.
Note that ws-server :host does nothing

Closes #156
Expand tests for (where)
config: use load-file instead of load-string (slurp file))

Not sure why I made this choice in the first place, but I'm pretty sure
I was crazy to do it. Removes the need for config file validation,
simplifies error handling. Closes #114.
Bring back config/validate-config

The reload process uses it to try and avoid wiping the scheduler until
we've got a good chance of success. Not perfect, but helps.
Index state is preserved across reloads.

The index is now a Service, and core/transition! knows how to transition
between cores with similar indices. Closes #138
Introduces Executor Services.

Service is now split into Service and ServiceEquiv. You can create a
Service which, when started, invokes a function to create an
ExecutorService. This Service acts as an Executor itself, so you
can execute any function on that service. It also knows enough about
common executors and queues to tell when two of these services are
equivalent.

riemann.config's add-service! is now just service!. service! may
optionally re-use an existing service from the current core. service!
now returns the service it chooses, so you can bind it to a variable and
use it within the config. This makes it possible to create executor
services in the config, bind them to variables, and use them to schedule
IO-bound functions for asynchronous execution.
streams/execute-on

A stream which defers evaluation of events against child streams onto an
Executor.
riemann.config/async-queue!

Wraps streams that require asynchronous IO.
ExecutorServiceService comparison is more sane now.

Also, it actually works when services aren't yet started. Some awkward
macro magic and brittle code involved, but it does handle the common
case OK. Closes #159, sort of.
riemann.streams/exception-stream

Allows streams (both at execution and run time) to capture exceptions
and redirect them as events to a given stream, for alerting.
riemann.streams: formatting, name a bunch of fns
Fix type error in graphite server.
Merge pull request #164 from PeterScott/graphite-server-bug

Fix type error in graphite server.
Remove tests/bench; replaced by riemann-bench.
Speed up TCP handler slightly

Iterates over states and events separately; a tad faster than iterating
over concat.
Client test: update for new reconnect strategy.
riemann-clojure-client 0.2.0