Improvements to error handling/reporting

Library parts of Slinky no longer write to console, but instead through
exceptions, which are caught by application code (server, builder). Errors
can be batched using SlinkyError.batch_errors.