Doc improvements

As discussed in lsegal/rubydoc.info#85, `MessageExpectation` was tagged with `@private`, which prevented the public methods here from showing up in our published docs.  As part of addressing that, I moved the private bits into a module that remains labeled `@private` so that we could change `MessageExpectation` to `@public` without making those things show up in the docs.  In addition, I made some minor edits and improvements to the docs themselves.