#2054: Update exceptions to allow custom detail

This addresses the changes requested in #2054 and allows for custom messages that do not necessarily require a string formatter be present in the detail message.