Adds missing xml doc comments.
Throws if the command tries to execute while already executing.
Updates CommandBase a bit.
Avoids throwing an unhandled exception to the SynchronizationContext (thereby typically crashing the app) when the command fails. Instead, we set a property so the exception can be retrieved.