Integration to merge multiple outstanding pull requests

This pull request integrates several outstanding pull requests.

* #28
* #24
* #23
  * #22
  * #16
  * #11
  * Obsoletes #10

For anyone wondering, I created a pull request for the integration branch for the following reasons:

1. At least one commit in this branch is not a duplicate/merge commit of a previous PR (c0754dd)
2. Manually merging the related pull requests mentioned above would duplicate work already done by Max
3. The merge commits refer to a branch named `integration`, so the history of the project as a whole will be more meaningful if we preserve the existence of `integration` as a separate working branch