Swarm error messages

Fixes #888.

Decent errors are now returned for the following tested cases:

- swarm description contains a predicted field that does not exist in include fields
- input csv data contains header(s) that do not exist in swarm description
- input csv data contains rows with missing data fields (null fields are ok)

This PR includes a change to the base encoder, so @scottpurdy or @chetan51 please review.