ENH: Improve warnings to avoid generic warnings messages

All generic Warnings have been replaced with specific warnings, which have
been consolidated into sm_exceptions.py.