Add schemas code, second attempt.

I've managed to avoid scalaz so far. I don't to depend on the whole library for one function.