minor: formatting
Significant rework of code and tests

1. Now all validation functions take 3 arguments. Previously, many of
the functions used variable arity without a compelling reason.

2. Much of the code is shorter now. Using (or (nil? k) ...) helped.

3. The tests have been cleaned up using `are` and `thrown?`

This does not break the API. Still, it is highly recommended that
dependent code no longer use variable arity functions for custom
validation functions.
use Clojure 1.6.0 and clj-time 0.7.0
version 0.1.6
0.1.7-SNAPSHOT
remove unnecessary `apply`
rewrite: use threading macro
minor: use fewer lines