Merge master with parameterize branch.

Judging by the discussion in issue #10 the consensus seems to be something like this. I also made some more changes on the master branch by moving everything concerning NSError to its own file, but I don't think that is as relevant for a project geared towards Cocoa and NSError.