Added ValidationError type

This should allow better matching of errors on long chains of Futures to
see which ones are valid or not.
Cleaning up the message variables to use this
Add timeout exception

This commit is the last of the better error handling. Resolves #14