bunch of stuff

see the commit messages for what's going on here

this closes:
- #164
- #167
- #178
- #184

and sets up support for Travis CI, which we need to enable.