Add streams/project

Project is like coalesce, but for selecting particular events out of the
whole mix.
Add folds/difference
Add folds/quotient
Add folds/product
All folds take the first element.

Thought about it for a while; first is significantly faster than last,
and in cases where we accrete events over time it'll actually be faster
to accrete them in *reverse* order.
folds/quotient produces error events for invalid operations

folds/sloppy-quotient considers 0/0 = 0
split* is no longer a macro; split evaluates streams only *once*

Closes #153
Formatting
splitp rewrite

Expanded documentation and tests. Evaluates streams only once.
Split and split*: correct docs and simplify tests
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.