Clean up signature to constructOutput.

* Addresses part of #107 
* Specify that the convenience `constructOutput` cannot change the function pointed to by `componentMemberFunction`.

This is ready to go in. I originally started to work on this because I wanted to address #80. But in doing so, I learned that we cannot expect non-member functions to be const. See #80 for a longer explanation.