Refactor get_version_from_app to better handle unexepcted cases
Refactor get_version_from_app to better handle unexepcted cases

For example, graphite's `version` returns a `module`. So this should
cover all of the bases to assure that we don't return back a `str`
of a `module`.

lepture/raven-python,percipient/raven-python,recht/raven-python,akalipetis/raven-python,jmp0xf/raven-python,danriti/raven-python,akalipetis/raven-python,johansteffner/raven-python,Photonomie/raven-python,dbravender/raven-python,johansteffner/raven-python,ewdurbin/raven-python,akheron/raven-python,ewdurbin/raven-python,lepture/raven-python,jmp0xf/raven-python,jmagnusson/raven-python,lepture/raven-python,dbravender/raven-python,akheron/raven-python,recht/raven-python,ronaldevers/raven-python,getsentry/raven-python,ronaldevers/raven-python,getsentry/raven-python,jmagnusson/raven-python,akheron/raven-python,ronaldevers/raven-python,getsentry/raven-python,akalipetis/raven-python,Photonomie/raven-python,johansteffner/raven-python,recht/raven-python,dbravender/raven-python,jmp0xf/raven-python,percipient/raven-python,jmagnusson/raven-python,percipient/raven-python,danriti/raven-python,danriti/raven-python,Photonomie/raven-python,ewdurbin/raven-python