Remove all exceptions from commands.
Remove more exception throwing.
Get all unit tests to build again.
Commit in-progress work to remove exceptions.
Get tests to pass with no exceptions.

* Use a variation of the expected<T> pattern to store exception messages instead of throwing them.
* If a value is obtained when it does not exist, always throw a runtime_error exception. This is not ideal, but it works in this case, since normally I only need the message from the exception anyway.
* Leave exceptions in low-level classes like matrix, so that we can still have error checking. These exceptio ns should never be thrown based on user input.